首页 新闻 会员 周边 捐助

简单的正则匹配不上1

0
[已解决问题] 解决于 2025-08-01 15:30

$str="abc123abcc12c34";
$str =~ /(?<=\d)[a-z]*/;
print $&

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-08-01 15:21
< >
分享
最佳答案
0

这个简单的正则把我打回原形了
我一度怀疑abcc能不能匹配[a-z]*
是不是字母相同才可以aaa,ccccc,bbbbb... 因为代表次数,同一个字母出现很多次意思?
不是。
[a-z]
的意思是:
“任意数量(0 次或多次)的任意小写字母,可以混合,也可以连续重复同一个字母”。
所以:
abcc ✅ 完全匹配 [a-z]*
a、aa、abc、zzzyx、ccccc 都 ✅
空串 "" 也 ✅(0 次也算成功)

  • 只负责“次数”,不负责“必须是同一个字母”

为什么预期匹配失败?
虽然字符串后续存在3后面的abcc(数字后跟字母),但引擎在更早的位置(第一个数字1之后)已成功匹配(空字符串),因此不会继续查找后续可能匹配。

_java_python | 小虾三级 |园豆:984 | 2025-08-01 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册