正则表达式 正则表达式教程 正则 技术 教程 PHP 正则表达式教程二 —— 限定符和符号的运算优先级 2017-11-30 14:13 2119 更新于 2017-11-30 14:14 ## 三、限定符 限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 `*`和 `+` 限定符是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现最小匹配(非贪婪),后面会讲解。 ### 1、* 匹配前面的子表达式零次或多次。 例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 它会尽可能多的匹配内容,贪婪匹配 ### 2、+ 匹配前面的子表达式一次或多次。 例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 它会尽可能多的匹配内容,贪婪匹配 ### 3、? 匹配前面的子表达式零次或一次。 例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 它会尽可能少的匹配内容,非贪婪匹配 请看上一节的`例子4` 关于贪婪模式和非贪婪模式请看下面一个例子 #### 例子 10 ``` $s = <<<'TEXT' <div>abc</div><div>def</div> TEXT; preg_match_all("#<div>(.+)</div>#",$s,$m); print_r($m); /* Array ( [0] => Array ( [0] => <div>abc</div><div>def</div> ) [1] => Array ( [0] => abc</div><div>def ) ) */ preg_match_all("#<div>(.+?)</div>#",$s,$m); print_r($m); /* Array ( [0] => Array ( [0] => <div>abc</div> [1] => <div>def</div> ) [1] => Array ( [0] => abc [1] => def ) ) */ ``` 匹配所有div标签包裹中的内容 第一个表达式匹配到了一个内容: `abc