正規表示式貪婪匹配模式,對於初學者,往往也很容易出錯。有時候需要匹配乙個段**內容,發現匹配與想要不一致。發現原來,跟貪婪模式有關係。如下,我們看下例子:
字串有: 「」,我們想匹配內容,正規表示式如下:
1、h3開頭與結尾,」」都作為普通字元
2、中間可以出現任意字元,個數可以是0個或者多個,正規表示式可以用:.* ,「.」代表任意字元,預設模式不匹配換行,」*」 重複前面字元0個或者多個。
3、最終我們考慮結果將是:」」 ,也可以是:」」 {}代表,重複前面指定個數字元,以下用到是,正規表示式除錯工具截圖,軟體可以看:正規表示式工具推薦(學習工具、測試工具)
2種結果都一樣,這是我們不希望得到的,我們希望從左邊開始,第乙個出現,就開始匹配。以上這種模式,是貪婪模式,也是正規表示式預設以這個方法匹配。表示重複字元,操作符,預設都是貪婪模式,如:.*,.+,.,. 都會匹配最大長度字元。正規表示式元字元,量詞預設首先最大匹配字串,這些量詞有:+,*,?, 。一開始匹配,就直接匹配到最長字串。
既然上面幾種,表示字元重複個數,元字元預設都是貪婪模式。如果,我們需要最小長度匹配,也就是懶惰模式,怎麼樣寫正規表示式呢?其實,正規表示式裡面通用方法是,在表示重複字元元字元,後面加多乙個」?」字元即可。上面正規表示式可以寫成:」」,或者」」 都可以。
懶惰模式,就匹配到我們需要字串了。
正規表示式,表示字串重複個數元字元,'?,+,*,{}' 預設都會選擇貪婪模式,會最大長度匹配字串,而要切換到懶惰模式,就只是在該元字元,後面加多乙個」?」 即可切換到非貪婪模式(懶惰模式)。
正規表示式 貪婪模式 懶惰模式
當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。以這個表示式為例 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,也就是匹配盡可能少的字...
正規表示式的貪婪與懶惰模式
當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。以這個表示式為例 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,也就是匹配盡可能少的字...
正規表示式 貪婪與懶惰
當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b 它將會匹配最長的以a開始,以b結束的字串 如果用它來搜尋aabab 的話,它會匹配整個字串aabab 這被稱為貪婪匹配。有時,我們更需要懶惰匹配,也就是匹配盡可能少的字...