如何在递归正则表达式中捕获组?

时间:2016-08-28 05:48:14

标签: php regex pcre

我正在尝试制作匹配过滤器的正则表达式,如Microsoft RestAPI Guidelines中所述。我已经使这个正则表达式匹配过滤字符串:

(\(([\s]*(?:and|or|not)?[\s]*([\w]+)[\s]+(?:eq|ne|gt|ge|lt|le)[\s]+(?:"(?:[^"\\]|\\.)*"|\d+(,\d+)*(\.\d+(e\d+)?)?|null)[\s]*|(?R))*\))

但是,它并没有捕获所有的子模式。例如,在此示例中为字符串:

((priority eq "123" or en eq 34) and pre eq 1)

它返回两个捕获:(1)整个字符串,(2)最后一个模式and pre eq 1

我也希望捕获所有子模式。我怎么能这样做?

以下是Regex101上的链接:https://regex101.com/r/wH8iH1/8

0 个答案:

没有答案