正则表达式 .*? 是什么意思啊?

如题所述

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

举例介绍:

如:<img src="test.jpg" width="60px" height="80px"/>

懒惰模式正则:

src=".*?"

结果:src="test.jpg"

扩展资料

正则表达式特殊字符及其含义:

1、\cx    

匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。    

2、\f    

匹配一个换页符。等价于 \x0c 和 \cL。    

3、\n  

匹配一个换行符。等价于 \x0a 和 \cJ。    

4、\r    

匹配一个回车符。等价于 \x0d 和 \cM。    

5、\s    

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。    

6、\S    

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。    

7、\t    

匹配一个制表符。等价于 \x09 和 \cI。    

8、\v    

匹配一个垂直制表符。等价于 \x0b 和 \cK。    

参考资料:

百度百科——正则表达式

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-10
.点 匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
* 匹配0或多个正好在它之前的那个字符。例如正则表达式。*意味着能够匹配任意数量的任何字符。
? 匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。

参考资料:http://baike.baidu.com/view/94238.htm

本回答被提问者采纳
第2个回答  2011-06-13
.* 很简单,就是一个字符循环0次或者很多次
多一个?在后面,意思是 懒惰循环
举一个例子你就明白了
对于字符串 aaaaaaa
a* 一下子很勤劳的把整个字符串都匹配完了,结果是
aaaaaaa

a*? 很懒,发现匹配字符串中一个a后,就完成了匹配,就不用再继续尝试下去了,因此就第一次只匹配
a,然后进行第二轮匹配了,还是只吃一个a就结束。因为他懒嘛
第3个回答  2011-06-10
?的一个用法1楼已经说了,匹配0次或1次。
但是?还有第二个含义,作为正则的懒惰模式。
正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例:
(abc)dfe(gh)
对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。
虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满足,所以正则会匹配多的那个。
如果我们只想匹配(abc)和(gh)就需要用到以下的表达式
(.*?)
在重复元字符*或者+后面跟一个?,作用就是在满足的条件下尽可能少匹配。
第4个回答  2011-06-22
.点 匹配任何单个字符。
* 匹配0或多个正好在它之前的那个字符。就是0到n次
? 匹配0或1个正好在它之前的那个字符。(之前!!注意:这个元字符不是所有的软件都支持的。)
例如113366 11(.*?)66 匹配后就是33