貪婪與反貪婪模式

2021-09-20 04:12:00 字數 686 閱讀 9826

貪婪模式:在整個表示式匹配成功的前提下,盡可能多的匹配 ( * );

非貪婪模式:在整個表示式匹配成功的前提下,盡可能少的匹配 ( ? );

python 裡數量詞預設是貪婪的。

使用貪婪的數量詞的正規表示式 ab* ,匹配結果: abbb。

* 決定了盡可能多匹配 b,所以 a 後面所有的 b 都出現了。

使用非貪婪的數量詞的正規表示式 ab*?,匹配結果: a。

即使前面有 *,但是 ? 決定了盡可能少匹配 b,所以沒有 b。

使用貪婪的數量詞的正規表示式:.*

匹配結果:test1

bbtest2

這裡採用的是貪婪模式。在匹配到第乙個「

」時已經可以使整個表示式匹配成功,

但是由於採用的是貪婪模式,所以仍然要向右嘗試匹配,檢視是否還有更長的可以成功

匹配的子串。匹配到第二個「

」後,向右再沒有可以成功匹配的子串,匹配結束,

匹配結果為「test1

bbtest2

」使用非貪婪的數量詞的正規表示式:.*?

匹配結果:test1

正規表示式二採用的是非貪婪模式,在匹配到第乙個「

」時使整個表示式匹配成

功,由於採用的是非貪婪模式,所以結束匹配,不再向右嘗試,匹配結果為

「test1

」。

貪婪與非貪婪模式

對於匹配優先量詞的匹配下限很好理解,等價於 它修飾的子表示式,最少匹配0次,最多匹配1次 等價於 它修飾的子表示式,最少匹配0次,最多匹配無窮多次 等價於 它修飾的子表示式,最少匹配1次,最多匹配無窮多次。對於忽略優先量詞的下限,也是容易忽略的。也是忽略優先量詞,被修飾的子表示式使用的也是非貪婪模式...

貪婪模式和非貪婪模式

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

貪婪模式和非貪婪模式

正規表示式通常使用於查詢匹配的字串。python裡數量詞預設是貪婪的 在少數語言裡也可能預設是非貪婪 總是嘗試匹配盡可能多的字元 非貪婪模式剛好相反,總是嘗試匹配盡可能少的字元。例如,正規表示式 ab 如果用於查詢 abbbc 就會找到 abbb 如果使用非貪婪的數量詞 ab 就會找到 a 例如1 ...