加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式非贪婪模式和取反字符类的使用区别

发布时间:2020-12-14 00:43:47 所属栏目:百科 来源:网络整理
导读:有这么一个字符串: a href="#"one/aa href="#"two/a 我想匹配出 a href="#"two/a 于是我就写了 preg_match_all('/a.*?two/a/',$str,$m); 得到的结果$m是 array( 0='a href="#"one/aa href="#"two/a') 我就纳闷了, .*? 不是指定了非贪婪模式吗?按我以前的

有这么一个字符串:

<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>'
)

其中的区别,无法用语言表达,心领神会吧。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读