正規表示式中的貪婪與非貪婪模式

2021-07-30 14:31:28 字數 689 閱讀 8961

貪婪模式是指匹配時盡可能匹配多的字串,非貪婪模式則匹配盡可能少的字串。

使用正規表示式進行匹配時,可能會出現多種匹配結果都符合的情況。而在php中,預設匹配貪婪模式。

如:

$str="張三

29";

$pattern="/(.*)/";

preg_match_all($pattern,$str,$matches);

var_dump($matches[0]);

匹配結果為:

若要進行非貪婪的匹配,只需在匹配pattern中加上"?"。在修飾匹配次數的特殊符號後再加上乙個 "?" 號,則可以使匹配次數不定的表示式盡可能少的匹配。

上例中,非貪婪的匹配如下:

$str="張三

29";

$pattern="/(.*?)/";

preg_match_all($pattern,$str,$matches);

var_dump($matches[0]);

結果:

正規表示式貪婪與非貪婪模式

之前做程式的時候看到過正規表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使...

正規表示式貪婪與非貪婪模式

1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到 abcaxc ab c 非貪婪匹配 就是匹配到結果就好,就少的匹配字元。如上面...

正規表示式 貪婪非貪婪模式

貪婪與非貪婪模式影響的是被量詞修飾的子表示式的匹配行為,貪婪模式在整個表示式匹配成功的前提下,盡可能多的匹配,而非貪婪模式在整個表示式匹配成功的前提下,盡可能少的匹配。非貪婪模式只被部分nfa引擎所支援。1.舉乙個例子 string str abcaxc patter p ab.c 貪婪匹配 正規表...