Regex 捕获块,重复多次

Regex 捕获块,重复多次,regex,Regex,假设我有这个正则表达式 ((?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,} 我想匹配一个字符串,比如 username="username" and name="name" and lastname="lastname" 当然,我想把它们都放在同一个捕获块中。 使用此正则表达式,我只能获得lastname=lastname 有人能解释为什么吗 注:我完全知道这也会匹配一个and,后面没有任何其他谓词,但我一次只处理这一步,正则表达式引擎只记住最后一组。

假设我有这个正则表达式

((?:[^"]|\\")*="(?:[^"]|\\")*"(?:\sand)?){0,}
我想匹配一个字符串,比如

username="username" and name="name" and lastname="lastname"
当然,我想把它们都放在同一个捕获块中。 使用此正则表达式,我只能获得lastname=lastname

有人能解释为什么吗


注:我完全知道这也会匹配一个and,后面没有任何其他谓词,但我一次只处理这一步,正则表达式引擎只记住最后一组。你可以简单地使用它

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


您可以将所有内容分组在一起,而不是将单个部分分组。

@vks因此无法提取我想要的所有字符串?您使用什么语言?这不能满足我的需要,因为它只是正则表达式的一小部分,即使这适合我的需要,我只需要一个匹配项,我正在使用的behat只需要此parsingvks中的一个参数:是!如果你能更新你的答案并详细解释,那就太好了: