请注意,这
g{N}等效于1,即, 反向引用 与相应的捕获组匹配的相同 值
(而不是模式)匹配。不过,这种语法稍微灵活一些,因为您可以通过在数字之前使用来定义 相
对于当前组的捕获组
-(即
g{-2},(p{L})(d)g{-2}将匹配a1a)。
PCRE引擎允许 子例程调用
来递归子模式。要重复Group 1的模式,请使用
(?1)和
(?&Val)递归已命名group的模式
Val。
另外,您可以使用字符类来匹配单个字符,并考虑使用
?量词使正则表达式的某些部分可选:
((s*(?P<Val>[a-zA-Z]+[0-9]*|[0-9]+|'.*'|[.*])s*(ni|in|[*/+-]|[=!><]=|[><])s*((?&Val))s*))
见正则表达式演示
请注意,
'.*'和
[.*]可能匹配太多,请考虑用
'[^']*'和替换
[[^][]*]。



