首页 新闻 会员 周边 捐助

正则断言不匹配

0
[已关闭问题] 关闭于 2025-07-28 11:12

$test="fafa\niEFFa"
$test =~ /(?=EF)/m;
print $&;
无输出

$tet =~ /EF/m;
print $&;
输出EF

_java_python的主页 _java_python | 小虾三级 | 园豆:1000
提问于:2025-07-28 11:08
< >
分享
所有回答(1)
0

(?=EF) 是一个 正向先行断言,它的作用是 检查当前位置后面是否紧跟 EF,但 不消耗任何字符。换句话说,它只是检查,而不是匹配实际的字符。
/m 修饰符的作用是让 ^ 和 $ 可以匹配每一行的开头和结尾,但在这里你并没有使用 ^ 或 $,所以 /m 实际上没有影响。
/EF/ 会匹配字符串中所有出现的 EF,因此可以成功匹配到 iEFFa 中的 EF。

$test =~ /i(?<=EF)/
无法匹配,因为当前位置F的左边是EF,而(?<=EF)只断点匹配,不消耗,要能匹配把EF加上:
/iEF(?<=EF)/

_java_python | 园豆:1000 (小虾三级) | 2025-07-28 11:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册