正規表示式 貪婪匹配

2021-10-03 21:37:35 字數 805 閱讀 7192

例如:booooooaaobbbbbyy

匹配規則:.

*(b.

+b).

*匹配結果:bbb

個人理解,.

*根據正規表示式會盡可能多的匹配字串,所以,第一次匹配時會將整個字串匹配下來,並記錄回溯點(最後乙個y)

然後繼續根據匹配規則進行匹配,即匹配b,結果引擎發現沒有b,於是進行回溯,.

*會將之前匹配的字串從右到左「吐」出乙個字元,即吐出y並記錄回溯點y,後與b進行匹配,重複如此,直至匹配到第乙個b為止,即byy的b,此時.

*:booooooaaobbbb,b:b,回溯點:b

接著正則引擎向下進行匹配,匹配到y,符合.

*,繼續在剩下的y中匹配b,發現無,於是從回溯點繼續向前回溯即從booooooaaobbbb吐出乙個b供剩下的表示式進行匹配…………

booooooaaobbbbbyy

匹配規則:.

*(b.

+b).

*匹配結果:bbb

匹配規則:.

*(b.

*b).

*匹配結果:bb

匹配規則:.

*(b.

+b).

*匹配結果:bbb

匹配規則:.

*?(b.

*?b).*

匹配結果:booooooaaob

匹配規則:.

*?(b.

*b).

*匹配結果:booooooaaobbbbb

把握住貪婪盡可能多的匹配,非貪婪盡可能少的匹配

正規表示式貪婪匹配

個人感覺對正規表示式理解的還算多的,貪婪模式也用過,但是最近匹配位址資訊的時候老是出錯 如下 寧波 鄞州 21.59901313997095 29.80867802546617 寧波鄞州區鄞縣大道萬科桂語裡小區 盲點小區 編號 fg 2019 寧波 鄞州 21.59901313997095 29.8...

正規表示式 貪婪匹配 轉義

preg match pa terr n,str 判斷是否匹配 preg replace pa tter n,replace,st r 將 符合的部 分替換為 replace,其中 內為一部分 此處占有乙個字元 匹配前面的 0個字元 匹配前面的 1個字元 匹配前面的0個或者1個字元 abc,匹配1個...

正規表示式 非貪婪匹配

先來看個例子 final static string text 999www.chinoukin.com 888 final static string regex public static void main string args 預想輸出結果 999 b 888 b 實際輸出結果 999 b...