【发布时间】:2020-12-12 05:53:23
【问题描述】:
我创建了一个正则表达式来匹配一个字符串,现在我需要从字符串中提取n次一组字符。
类似这样的:
{"Group 1":{"Name":"A","Name":"B",....,"Name":"Z"},{"Group 2":{"Name":"AA","Name":"BB",....,"Name":"ZZ"}}
我现在创建了正则表达式 \\"Group 1.\*?\\},我想只使用这条规则 Name\\":\\"(.\*?)\\" 从组 1 中提取所有名称。
如果我使用\\"Group 1.\*?Name\\":\\"(.\*?)\\".\*?\\},它只会提取第一个结果,但我需要所有结果。
有什么想法吗?谢谢
【问题讨论】:
-
为此使用 JSON 解析器,而不是正则表达式。
-
这是 JSON 解析器的经典案例。你使用什么语言?
-
它不是 JSON,它是 JS,我使用的是 Python,我只需要一个正则表达式,它只是一个例子而不是真实的情况,真正的字符串是一个 HTML 的 JS,太大了,放不下
-
这其实是一个有趣的问题。
preg_match_all('#\{"Group.*?\:\{("Name"\:"([a-z]*)").*?\}#i', $str, $matches);仅返回 A 和 AA。有一种方法可以通过正确插入 ?R 来获得您想要的东西,但我无法弄清楚。 stackoverflow.com/questions/8440911/recursive-php-regex -
谢谢@anjanesh,看起来不错
标签: regex