我仍在学习 Perl,所以如果这是一个明显的问题,我深表歉意。
有没有办法匹配不包含在括号中的文本?
例如,搜索 foo 将仅匹配第二行。
(bar foo bar)
bar foo (
bar foo
(bar) (foo)
)
正则表达式模式具有隐式前导\G(?s:.)*?
(“跳过字符直到找到匹配项”)。下面扩展了该定义,将嵌套括号视为要跳过的字符。
while (
$string =~ m{
\G (?&MEGA_DOT)*?
( foo )
(?(DEFINE)
(?<MEGA_DOT> [^()] | \( (?&MEGA_DOT)*+ \) )
)
}xg
) {
say "Found a match at pos $-[1].";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)