1

次の形式でデータストリームからJSONデータのブロックを抽出しようとしています。

    Some-Header-Name:Value
    Content-Length:Value
    Some-Other-Header:Value

    {可変長のJSONデータ文字列}

ストリームには上記のパターンの多くのインスタンスが含まれており、前のヘッダーで示されているように、各インスタンスのJSONデータの長さは異なりますContent-Length

各コンテンツ長ヘッダー値に一致する正規表現を作成し、それを使用して関連するコンテンツブロックに一致させたいと思います。私はこのようなものを想像しています...

    Content-Length:(?<LENGTH> \ d +)。*?\ r \ n \ r \ n(?<CONTENT>。{$ <LENGTH>})

CONTENT...しかし、グループの量指定子を動的な値として指定する方法がわかりません。

注:ヘッダーは別々の行にあり、コンテンツは空白行でヘッダーから区切られていますが、コンテンツの後に改行がないため、これを使用してコンテンツの終わりを判別することはできません。

任意の提案をいただければ幸いです。

ありがとう、ティム

4

1 に答える 1

1

正規表現は数値ではなく文字列に一致するため、文字列の一部を取得して数値に変換し、同じ正規表現内で再適用することはできません。

あなたはいくつかのステップでそれをしなければならないでしょう:

  1. ヘッダーを一致させ、長さの値を抽出します
  2. 次のような新しい正規表現を作成します@"(?<HEADER>...)(?<CONTENT>.{" + length + "})"
  3. その正規表現を再適用し、内容を抽出します。
于 2010-10-06T09:41:06.607 に答える