我对正则表达式相当陌生,最近我在 perl 脚本中偶然发现了一个我无法弄清楚的正则表达式:
$groups= qr/\(([^()]+|(??{$groups}))*\)/;
任何帮助,将不胜感激!
最佳答案
好吧,如果你扩展它:
$groups= qr/
\( # match an open paren (
( # followed by
[^()]+ # one or more non-paren character
| # OR
(??{$groups}) # the regex itself
)* # repeated zero or more times
\) # followed by a close paren )
/x;
你得到了一种优雅的递归方法来找到平衡的括号:)
关于正则表达式模式说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453763/