在匹配正則的時候或許會遇到返回的結果多幾個字元或者少幾個字元,什麼原因呢,這個就是正則的貪婪與非貪婪模式,假設,我的匹配字元是:
a = 'asdf444adfadf adfsadf'
正規表示式的貪婪模式:
[a-z]
列印結果
['asdf', 'adfadf', 'adfsad']
按原理來說在匹配到第二個字元的時候條件就已經滿足了,但是為什麼又繼續往後匹配,這個就是正規表示式複數的貪婪模式,在匹配到第二個的時候發現後面還能繼續滿足條件那麼久會繼續匹配,直到條件不滿足為止。
非貪婪模式跟貪婪模式相反的,理解了貪婪模式那麼非貪婪模式也是類似的
開啟非貪婪模式的話也很簡單,後面加個問號就行
[a-z]?
正規表示式中數量詞的貪婪和非貪婪
在使用各種數量詞時,正規表示式總是匹配盡可能多的復合規則的字元,知道允許匹配的上限。例如,在使用表示式 bo 匹配 booooo 時,會得到匹配結果 booooo 而不是匹配 bo 例如,在使用表示式 bo 匹配 booooo 時,會先匹配 booooo 發現不匹配,則去掉末尾的 o 匹配 booo...
正規表示式的數量詞
greedy 數量詞x?x,一次或一次也沒有x x,零次或多次x x,一次或多次 xx,恰好 n 次 xx,至少 n 次 xx,至少 n 次,但是不超過m 次 reluctant 數量詞x?x,一次或一次也沒有x x,零次或多次x x,一次或多次x?x,恰好 n 次x?x,至少 n 次x?x,至少 ...
perl 非貪婪的數量詞
例子 假設在fred and barney went bowling last night 上使用 fred.barney 進行匹配。我們知道正規表示式 將匹配上,下面我們具體的講解這乙個過程 首先,子模式fred 將匹配其對應的字串。模式的下一部分是.它將匹配除了換行符之外的任意字元,次數大於等於...