如何使用 Regex 匹配两个周围字符串(不包括周围字符串)之间出现的每个字符串?

How do I use Regex to match every occurrence of a string between two surrounding strings exclusive of the surrounding strings?

我正在为正则表达式而苦苦挣扎。这是我根据 hwnd 的建议(已解决我之前的问题)使用的命令(运行 Cygwin on Windows):

grep -Po '(?<="id":)[^,]+' regex_test.txt

如何更改正则表达式,以便创建的匹配项以 、{"id"::[{"id": ?遗憾的是,当前表达式还捕获了不需要的 ID,这些 ID 以 :{"id":

为前缀

输入名为“regex_test.txt”的文本文件:

reason":{"id":25549177,“pattern":null},"iphone":[{"id":2411977008,version":null},{"id":2430057923,

输出:

25549177

2411977008

2430057923

期望的输出:

2411977008

2430057923

请告诉我您对这些问题的看法。

您可以使用 Positive Lookbehind 断言(如链接 answer 所示):

grep -Po '(?<="id":)[^,]+' regex_test.txt

Ideone Demo