使用 POSIX.2 正则表达式提取 JSON 子字符串

Extracting a JSON substring with POSIX.2 regex

我需要使用 POSIX.2 扩展正则表达式(Linux 上的 man 7 regex)从 JSON 字符串中提取字段值:例如。来自 {"field":"value"}

我习惯于使用 Perl 风格的正则表达式,而简单的 /"field":"(.*)"/ 就可以解决问题,但 POSIX 正则表达式似乎没有表达捕获组的概念。

是否有技巧可以制作一个 POSIX 模式来精确匹配 JSON 值?

在POSIX"basic"正则表达式中,捕获组用\(...\)表示,所以你要的是:

"field":"\([^"]*\)"

请注意,您必须使用 [^"]* 来防止模式匹配多个字符串(POSIX 正则表达式没有非贪婪量词)。

在 "extended" 正则表达式中,您不需要反斜杠。但是你仍然需要使用 [^"] 而不是 . 来避免匹配太多。