正規表示式 之貪婪模式

2021-07-26 18:30:45 字數 665 閱讀 1825

直觀上是盡可能多的匹配字元

在使用修飾匹配次數的特殊符號時,有幾種表示方法可以使同乙個表示式能夠匹配不同的次數,比如:」」, 「」, 「?」, 「*」, 「+」,具體匹配的次數隨被匹配的字串而定。這種重複匹配不定次數的表示式在匹配過程中,總是盡可能多的匹配。

比如,針對文字 「d***d***d」,舉例如下:

(d)(\w+)中"\w+" 將匹配第乙個 "d" 之後的所有字元 "***d***d"

直觀上是盡可能少的匹配字元

常用*?進行限制匹配,不會把後面的字元也吞進去

在修飾匹配次數的特殊符號後再加上乙個 「?」 號,則可以使匹配次數不定的表示式盡可能少的匹配,使可匹配可不匹配的表示式,盡可能的 「不匹配」。這種匹配原則叫作 「非貪婪」 模式,也叫作 「勉強」 模式。如果少匹配就會導致整個表示式匹配失敗的時候,與貪婪模式類似,非貪婪模式會最小限度的再匹配一些,以使整個表示式匹配成功。

比如,針對文字 「d***d***d」,舉例如下:

(d)(\w+?)中 "\w+?" 將盡可能少的匹配第乙個 "d" 之後的字元,結果是:"\w+?" 只匹配了乙個 "x"

正規表示式之貪婪模式

象 這樣地重複是 貪婪的 當重複乙個 re 時,匹配引擎會試著重複盡可能多的次數。如果模式的後面部分沒有被匹配,匹配引擎將退回並再次嘗試更小的重複。一步步的示例可以使它更加清晰。讓我們考慮表示式 a bcd b。它匹配字母 a 零個或更多個來自類 bcd 中的字母,最後以 b 結尾。現在想一想該 r...

正規表示式貪婪模式

貪婪匹配與非貪婪匹配 貪婪匹配 預設情況下,正規表示式使用最長匹配原則 也叫貪婪匹配原則 例如 要將 zoom 中匹配 zo?的部 分替換成 r 替換的的結果是 rom 如果要將 zoom 中匹配 zo 的部分替換成 r 替換後的結果是 rm 非貪婪匹配 當字元?緊隨其他限定符 之後時,匹配模式變成...

正規表示式, 貪婪模式

2018 2 28 10 15 09 星期三 好幾年沒怎麼用過正則了,正則有乙個常見的用法就是非貪婪模式 方法一 在 和 之後 表示非貪婪匹配 限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪婪或最小匹配。這和 本身代表0次或1次的限制有關 除了換行符外的任意...