正则表达式 零宽断言 求助:(?=.*[a-z])

问题一

.代表任意字符,(?=.*[a-z]) 表示任意字符拼接小写字母,那(?=[a-z])跟它有什么区别?

问题二

前瞻:exp1(?=exp2) 查找exp2前面的exp1,

后顾:(?<=exp2)exp1 查找exp2后面的exp1,

(?=.*[a-z]). 和 .(?=.*[a-z]) 我测试都能运行,反而(?<=.*[a-z]). 运行不了,是不是后顾表达式不能用 (?<=exp2)exp1 了?

问题三

用菜鸟工具正则表达式在线测试,abcD去匹配 (?=.*[a-z]). 匹配结果是 a b c,为什么a也能匹配,a的前面什么都没有啊!

说实话,没有看出什么区别。

(?=.*[a-z])不行的话,你试试看 (?=.*?[a-z])

*代表0或者多个,+是起码1个,所以没有也能匹配