正则表达式里面 .* 和 .*? 有什么区别?

414人浏览 / 0人评论

在正则表达式的基本语法中,有如下规定:

. 匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用像"(.|\n)"的模式。

* 匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。 等价于{0,}。

? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配。

*限定符是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

比如:MyBatis框架

使用//匹配的结果为:H1>MyBatis框架

使用//匹配结果为:H1。

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…