捕获块,重复多次

时间:2015-09-14 13:49:58

标签: regex

我们说我有这个正则表达式

((?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,}

我希望匹配像

这样的字符串
username="username" and name="name" and lastname="lastname"

当然,我想把所有人都放到同一个捕获区 使用此正则表达式,我只能获得lastname="lastname"

有人可以解释我为什么?

PS:我完全知道这也会与#34;和#34;相匹配。没有任何其他"谓词"之后,但我一次只处理这一步

1 个答案:

答案 0 :(得分:0)

正则表达式引擎只会记住最后一组。你可以简单地使用它来代替

((?:(?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,})

参见演示。

https://regex101.com/r/lS1nO8/2

您可以将所有部分组合在一起,而不是将各个部分分组。