關於正規表示式中貪婪量詞與懶惰量詞的形象解釋

2021-04-21 13:59:49 字數 881 閱讀 9391

字串

a*****b*****b===

a.*b 將匹配滿足條件最長的字串 a*****b*****b

* 因為它比較貪,因此被稱為貪婪量詞。

貪婪量詞的工作方式:

首先將:a*****b*****b=== 全部吃掉,從右邊乙個乙個地吐出來

1. a*****b*****b=== 不匹配,吐出一字元

2. a*****b*****b== 不匹配,再吐出一字元

3. a*****b*****b= 不匹配,再吐出一字元

4. a*****b*****b 匹配了,結束。如果再不匹配繼續吐,直到沒有字元了,匹配失敗

a.*? 將匹配滿足條件最短的字串 a*****b

*? 比較懶,因此稱為懶惰或者是勉強量詞。

勉強量詞的工作方式:

從左邊乙個乙個地吃掉字元

1. a 不能匹配表示式,繼續吃

2. a= 不能匹配表示式,繼續吃

3. a== 不能匹配表示式,繼續吃

4. a=== 不能匹配表示式,繼續吃

5. a==== 不能匹配表示式,繼續吃

6. a***** 不能匹配表示式,繼續吃

7. a*****b 呵呵,終於能匹配表示式了,匹配結束,匹配位置留於字元 b 後面,繼續其他的匹配。如果不能匹配則乙個乙個地吃掉整個字串直到吃完為止若還沒有匹配則匹配失敗。

引自:http://topic.csdn.net/u/20080325/17/fb7a3e8d-029a-4d8e-89ae-77a9d28ec301.html

正規表示式 貪婪與懶惰

當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b 它將會匹配最長的以a開始,以b結束的字串 如果用它來搜尋aabab 的話,它會匹配整個字串aabab 這被稱為貪婪匹配。有時,我們更需要懶惰匹配,也就是匹配盡可能少的字...

正規表示式的貪婪與懶惰

當正規表示式中包含能接受重複的限定符 指定數量的 例如 等 時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,...

正規表示式的貪婪與懶惰

當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。以這個表示式為例 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,也就是匹配盡可能少的字...