正則表達(dá)式里面 .* 和 .*? 有什么區(qū)別?
3 回答

萬千封印
TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
\s匹配任意的空白符(包括空格,制表符(Tab),換行符,中文全角空格)
\S則是任意不是空白符的字符
?涉及到貪婪模式
當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時,通常的行為是(在使整個表達(dá)式能得到匹配的前提下)匹配盡可能多的字符。以這個表達(dá)式為例:a.*b,它將會匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會匹配整個字符串a(chǎn)abab。這被稱為貪婪匹配。
有時,我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個問號?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個匹配成功的前提下使用最少的重復(fù)?,F(xiàn)在看看懶惰版的例子吧:
a.*?b匹配最短的,以a開始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會匹配aab(第一到第三個字符)和ab(第四到第五個字符)

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊
\w 等價于 [a-zA-Z0-9_]
\W 等價于 [^a-zA-Z0-9_],就是排除了\w的情況,也就是說它們表示的意思相反
- 3 回答
- 0 關(guān)注
- 904 瀏覽
添加回答
舉報
0/150
提交
取消