我正在编写一个正则表达式来匹配遵循特定复杂格式的项目列表,因此正则表达式非常长。此列表中的项目必须用逗号分隔,可以选择用右侧的一个空格或两侧的空格填充,因此匹配分隔符的正则表达式为( , )|(, ?)
。另外,我希望列表在方括号之间。
例如,它应符合以下内容:
但不是以下内容:
我目前使用的正则表达式是:\[verylongregex(?:(?: , )|(?:, ?)verylongregex)*\]
,但我想简化此操作以包含仅与元素格式匹配一次的正则表达式模式。
正则表达式是否有匹配由另一个组分隔的X组的方法?
答案 0 :(得分:0)
这是一个答案。我不知道这是不是你要找的东西,但它仍然存在。
1 /假设你想要在一个组中捕获列表:
(\[(?:complexRegex(?: , |, ?|\]))+)
演示:http://regex101.com/r/pW2oZ1/1
2 /假设你想要单独匹配列表中的所有元素,这是一个复杂得多的事情(至少我的知识......)。这是一个有效(复杂)的解决方案:
(?:\[|(?!\[)\G(?: , |, ?))(complexRegex)(?=(?:(?: , |, ?)complexRegex)*\])
演示:http://regex101.com/r/iB3jD1/2
如果需要,我现在没有时间写一个解释。如果你想要一个,请在评论中提出,我今天晚些时候会写。遗憾...