1

我正在尝试从以下格式的数据流中提取 JSON 数据块:

    一些标头名称:值
    内容长度:值
    Some-Other-Header:值

    {可变长度的JSON数据字符串}

该流包含上述模式的许多实例,并且每个实例中 JSON 数据的长度不同,如前面的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 回答