【发布时间】:2021-11-15 17:02:03
【问题描述】:
我正在尝试创建一个正则表达式,它将捕获其中的任何对象的整个数组。
我有示例输入字符串:
[2020-05-29T10:00:00, 12.5, 'Test text'][][[], ['Some Data']][['String with[ \'escaped quote][ and parenthesis inside it']]
预期的匹配是:
Match 1: [2020-05-29T10:00:00, 12.5, 'Test text']
Match 2: []
Match 3: [[], ['Some Data']]
Match 4: [['String with[ \'escaped quote][ and parenthesis inside it']] // If this one is possible it's brilliant
我已经创建的正则表达式是:\[[a-zA-Z0-9\-,' :\.\[]*\],但它不处理数组数组和字符串内的括号。
非常感谢您的帮助!
【问题讨论】:
-
这里不能有
[[], []]匹配。 -
如果您使用 PCRE,可以使用
\[\s*(?>((?:'[^\\']*(?:\\[\s\S][^\\']*)*'|[^]'\s,])+)(?:\s*,\s*\g<1>)*|(?R))*\s*],但它可能不适用于所有情况。\[\s*(?>(\w+(?:\.\w+)*(?:\[\w+])*|(?:'[^\\']*(?:\\[\s\S][^\\']*)*'|[^]\w])+)(?:\s*,\s*\g<1>)*|(?R))*\s*]可能...但这太脆弱了,您需要获取适当的解析器。 -
我有一些东西可以匹配你的 4 场比赛,但我真的需要先了解引擎才能发布它。如果你可以添加一个语言标签会很有帮助,因为正则表达式标签要求“这个标签还应该包括一个指定适用的编程语言或工具的标签”。
-
@Scratte 添加了一个平台,它是 .net C#
-
你不能用正则表达式解析这些,原因在这个答案中有详细解释(对于用正则表达式解析 HTML 的等效问题):stackoverflow.com/a/1732454