PHP正则:加上/U会反转匹配模式。
原来是贪婪匹配的,将变成 懒惰匹配;
原来是懒惰匹配的,将变成 贪婪匹配。
例如一 ,加上U,将懒惰匹配 变成 贪婪匹配:
(.*?) 表示是 懒惰匹配。 加?表示 用懒惰模式匹配。
输出:
Array
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>
[1] => <div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae
[1] => asdef<em>dfge</em>
)
)
如果:
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em>
)
)
例如二, 加上U, 将原本的贪婪模式 变成 懒惰模式。
例如:
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em>
)
)
如果:
加上U后,则反转了模式,将原来(.*)的贪婪模式,反转变成了 懒惰模式。
输出:
Array
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>
[1] => <div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae
[1] => asdef<em>dfge</em>
)
)
由此可见,U 的主要作用就是 : 反转匹配模式。
原本的(.*?)懒惰模式,如果加上U,就变成了贪婪模式;
原来是贪婪匹配的,将变成 懒惰匹配;
原来是懒惰匹配的,将变成 贪婪匹配。
例如一 ,加上U,将懒惰匹配 变成 贪婪匹配:
<?php
$str = <<<HTML
<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>
HTML;
preg_match_all('/<div>(.*?)<br>',$str,$arr);
print_r($arr);
(.*?) 表示是 懒惰匹配。 加?表示 用懒惰模式匹配。
输出:
Array
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>
[1] => <div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae
[1] => asdef<em>dfge</em>
)
)
如果:
<?php
$str = <<<HTML
<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>
HTML;
preg_match_all('/<div>(.*?)<br>/U',$str,$arr);
print_r($arr);
加上了U,则反转了匹配模式,将原本 (.*?) 懒惰模式,变成了贪婪模式。则输出:
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em>
)
)
例如二, 加上U, 将原本的贪婪模式 变成 懒惰模式。
例如:
<?php
$str = <<<HTML
<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>
HTML;
preg_match_all('/<div>(.*)<br>/',$str,$arr);
print_r($arr);
(.*)贪婪模式,
输出:
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em>
)
)
如果:
<?php
$str = <<<HTML
<div>asdef<em>ccda</em>aae<br>sdc</div><div>asdef<em>dfge</em><br>sdc</div>
HTML;
preg_match_all('/<div>(.*)<br>/U',$str,$arr);
print_r($arr);
加上U后,则反转了模式,将原来(.*)的贪婪模式,反转变成了 懒惰模式。
输出:
Array
(
[0] => Array
(
[0] => <div>asdef<em>ccda</em>aae<br>
[1] => <div>asdef<em>dfge</em><br>
)
[1] => Array
(
[0] => asdef<em>ccda</em>aae
[1] => asdef<em>dfge</em>
)
)
由此可见,U 的主要作用就是 : 反转匹配模式。
原本的(.*?)懒惰模式,如果加上U,就变成了贪婪模式;
原本的(.*) 贪婪模式,如果加上U,就变成了懒惰模式。
原创,转载请注明出处: http://blog.csdn.net/YoungerChen