PHP正则表达式模式后面 /U,/s 参数

来源:互联网 发布:双色球缩水软件在线 编辑:程序博客网 时间:2024/05/19 21:42

http://php.net/manual/zh/reference.pcre.pattern.modifiers.php

 

U (PCRE_UNGREEDY) 这个修饰符逆转了量词的"贪婪"模式。 使量词默认为非贪婪的,通过量词后紧跟? 的方式可以使其成为贪婪的。这和 perl 是不兼容的。 它同样可以使用 模式内修饰符设置 (?U)进行设置, 或者在量词后以问号标记其非贪婪(比如.*?)。


例:1、$str = 'aabcaabab';      $regx = '/a.*b/U';      preg_match_all($regx, $str, $matches);      匹配结果:Array ( [0] => Array ( [0] => aab [1] => aab [2] => ab ) )      注:该结果和正则表达式 “/a.*?/” 匹配结果一致2、$str = 'aabcaabab';      $regx = '/a.*b/';      preg_match_all($regx, $str, $matches);      匹配结果:Array ( [0] => Array ( [0] => aabcaabab ) )

s (PCRE_DOTALL) 如果设置了这个修饰符,模式中的点号元字符匹配所有字符,包含换行符。如果没有这个 修饰符,点号不匹配换行符。这个修饰符等同于 perl 中的/s修饰符。 一个取反字符类比如 [^a] 总是匹配换行符,而不依赖于这个修饰符的设置。

$str="<div class="info">abc</div>"$regx = '/<div[^>]*?class="info">.*?[a-z]+.*?</div>/is';  preg_match_all($regx, $str, $matches);  print_r($matches);  匹配结果:Array ( [0] => Array ( [0] => abc ) )

注:正则中不加s模式,则匹配结果为空



     注:正则中不加s模式,则匹配结果为空


0 0
原创粉丝点击