$str="abc123abcc12c34";
$str =~ /(?<=\d)[a-z]*/;
print $&
这个简单的正则把我打回原形了
我一度怀疑abcc能不能匹配[a-z]*
是不是字母相同才可以aaa,ccccc,bbbbb... 因为代表次数,同一个字母出现很多次意思?
不是。
[a-z] 的意思是:
“任意数量(0 次或多次)的任意小写字母,可以混合,也可以连续重复同一个字母”。
所以:
abcc ✅ 完全匹配 [a-z]*
a、aa、abc、zzzyx、ccccc 都 ✅
空串 "" 也 ✅(0 次也算成功)
为什么预期匹配失败?
虽然字符串后续存在3后面的abcc(数字后跟字母),但引擎在更早的位置(第一个数字1之后)已成功匹配(空字符串),因此不会继续查找后续可能匹配。