W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
當正則表達式中包含能接受重復的限定符時,通常的行為是(在使整個表達式能得到匹配的前提下)匹配盡可能多的字符。以這個表達式為例:a.*b
,它將會匹配最長的以 a 開始,以 b 結(jié)束的字符串。如果用它來搜索 aabab 的話,它會匹配整個字符串 aabab。這被稱為貪婪匹配。
有時,我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個問號?。這樣.*?
就意味著匹配任意數(shù)量的重復,但是在能使整個匹配成功的前提下使用最少的重復?,F(xiàn)在看看懶惰版的例子吧:
a.*?b
匹配最短的,以 a 開始,以 b 結(jié)束的字符串。如果把它應用于 aabab 的話,它會匹配 aab(第一到第三個字符)和 ab(第四到第五個字符)。
為什么第一個匹配是 aab(第一到第三個字符)而不是ab(第二到第三個字符)?簡單地說,因為正則表達式有另一條規(guī)則,比懶惰/貪婪規(guī)則的優(yōu)先級更高:最先開始的匹配擁有最高的優(yōu)先權(quán)——The match that begins earliest wins。
表 5.懶惰限定符
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: