【发布时间】:2017-05-25 18:32:22
【问题描述】:
不明白为什么这个正则表达式 (regex101)
/[\|]?([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g
捕获所有输入,而 this (regex101)
/[\|]+([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g
仅捕获 |Func
输入字符串为|Func(param1, param2, param32, param54, param293, par13am, param)|
另外,我怎样才能以正常方式匹配重复捕获组?例如。我有正则表达式
/\(\(\s*([a-z\_]+){1}(?:\s+\,\s+(\d+)*)*\s*\)\)/gui
输入字符串为(( string , 1 , 2 ))。
Regex101 表示“重复捕获组将仅捕获最后一次迭代。在重复组周围放置一个捕获组以捕获所有迭代......”。我已尝试遵循此提示,但对我没有帮助。
【问题讨论】:
-
见
\|+([a-z0-9A-Z]+)(?:\(?(\w+(?:\s*,\s*\w+)*)\)?)?\|?。您无法使用 PCRE 捕获所有重复捕获,您可以使用基于\G的正则表达式匹配它们。见(?:\G(?!\A)\s*,\s*|\|+([a-z0-9A-Z]+)\()\K\w+。 -
不知道我无法通过 PCRE 一次调用全部捕获。现在我明白了,这就是为什么 regex101 要求我捕获重复组以使其适合一场比赛。非常感谢您的帮助!
标签: regex pcre capturing-group