php 正则表达式贪婪模式,非贪婪模式

php 正则表达式贪婪模式,非贪婪模式

正则表达式匹配模式分为贪婪非贪婪两种。这两种模式是影响存在限定词修饰的子表达式的匹配行为。

贪婪模式:是一次尽可能多的匹配结果集,直白的说就是匹配最长的符合表达式的串。
非贪婪模式:是一次匹配最短的符合表达式的串,如果有多个满足则匹配出多个

限定词包括:

{m,}, {m,n} ? * +* 零次或多次+ 一次或多次? 零次或一次

举个例子:

字符串:aaababcab,要求匹配出axxb格式的字符串/a.*b/,会匹配出整个字符串,即是采用贪婪匹配模式;/a.*?b/,匹配结果为aab, ab, ab,如果要使用非贪婪匹配模式, 在限定词后加?,会转为非贪婪模式,两种模式的使用根据需求确定。比如:如果要判断一个字符串是不是数字串,可以使用贪婪模式匹配,如果要获取多个子串,就使用非贪婪模式。

推荐阅读