正则表达式非贪婪模式和取反字符类的使用区别
2017-01-05 16:59
441 查看
有这么一个字符串:
我想匹配出 <a href="#">two</a>
于是我就写了
得到的结果$m是
我就纳闷了,.*? 不是指定了非贪婪模式吗?按我以前的理解就是 .* 不会包含 ? 后面的 > 字符,等效[^>]* 今天我才知道我错了。。
这里贪婪模式并不是排除问号后面的字符,理论上的意思是尽可能少的重复,什么意思呢?再举个例子:
这时候再用同样的正则去匹配会得到
其中的区别,无法用语言表达,心领神会吧。
<a href="#">one</a><a href="#">two</a>
我想匹配出 <a href="#">two</a>
于是我就写了
preg_match_all('/<a.*?>two<\/a>/',$str,$m);
得到的结果$m是
array( 0=>'<a href="#">one</a><a href="#">two</a>' )
我就纳闷了,.*? 不是指定了非贪婪模式吗?按我以前的理解就是 .* 不会包含 ? 后面的 > 字符,等效[^>]* 今天我才知道我错了。。
这里贪婪模式并不是排除问号后面的字符,理论上的意思是尽可能少的重复,什么意思呢?再举个例子:
<a href="#">one</a><a href="#">two</a><a href="#">two</a>
这时候再用同样的正则去匹配会得到
array( 0=>'<a href="#">one</a><a href="#">two</a>', 1=>'<a href="#">two</a>' )
其中的区别,无法用语言表达,心领神会吧。
相关文章推荐
- JS中使用正则表达式g模式和非g模式的区别
- [正则表达式]-基础语法二 元字符之限定符与贪婪模式
- js中使用正则表达式(g模式和非g模式的区别)
- 正则表达式(regex) 贪婪模式、懒惰模式使用方法
- Python 正则表达式里面 贪婪模式和非贪婪模式的区别
- 浅谈php正则表达式中的非贪婪模式匹配的使用
- js中使用正则表达式(五)特殊字符、匹配模式、捕获组与反向引用介绍
- 正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例及原理
- 正则表达式 取两字符中间的字符串(双向非贪婪模式)
- python里使用正则表达式的非贪婪模式
- python中如何使用正则表达式的非贪婪模式示例
- php正则表达式中的非贪婪模式匹配的使用
- 浅谈php正则表达式中的非贪婪模式匹配的使用
- 使用正则表达式的模式匹配
- 在Sql语句中使用正则表达式来查找你所要的字符
- C#中可以使用正则表达式来过滤html字符
- Java中使用正则表达式实现字符串匹配
- Java中使用正则表达式实现字符串匹配
- C#中可以使用正则表达式来过滤html字符
- C#中使用正则表达式验证特殊字符