我正在尝试制作匹配过滤器的正则表达式,如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