我们说我有这个正则表达式
((?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,}
我希望匹配像
这样的字符串username="username" and name="name" and lastname="lastname"
当然,我想把所有人都放到同一个捕获区
使用此正则表达式,我只能获得lastname="lastname"
。
有人可以解释我为什么?
PS:我完全知道这也会与#34;和#34;相匹配。没有任何其他"谓词"之后,但我一次只处理这一步答案 0 :(得分:0)
正则表达式引擎只会记住最后一组。你可以简单地使用它来代替
((?:(?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,})
参见演示。
https://regex101.com/r/lS1nO8/2
您可以将所有部分组合在一起,而不是将各个部分分组。