1

表達(dá)式 .* 就是單符匹配任意即貪婪匹配 

表達(dá)式 .*? 是滿足條件的情況只匹配一次,即最小匹配.

s    匹配任何空白非打印字符,包括空格、制表符、換頁符等等。等價(jià)于 [ fnrtv]。注意 Unicode 正則表達(dá)式會(huì)匹配全角空格符。   

S    匹配任何非空白非打印字符。等價(jià)于 [^ fnrtv]。    

*限定符是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一個(gè)?就可以實(shí)現(xiàn)非貪婪或最小匹配。

比如:<H1>Chapter 1 - 介紹正則表達(dá)式</H1>

使用/<.*>/匹配的結(jié)果為:H1>Chapter 1 - 介紹正則表達(dá)式</H1。

使用/<.*?>/匹配結(jié)果為:H1。

拓展知識(shí)

正則表達(dá)式特殊字符及其含義

-

下面是更多關(guān)于?的問答

最佳貢獻(xiàn)者
2

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

\s匹配的空白符(包括空制表符(Tab),換行符,中文全角空格)

\S則是任意不是空白符符

?涉及到貪婪模式

當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符。以這個(gè)表達(dá)式為例:a.*b,它將會(huì)匹配最長(zhǎng)的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會(huì)匹配整個(gè)字符串a(chǎn)abab。這被稱為貪婪匹配。

有時(shí),我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個(gè)問號(hào)?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。現(xiàn)在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會(huì)匹配aab(第一到第三個(gè)字符)和ab(第四到第五個(gè)字符)

3

正則表達(dá)式.*?與(.*?)有什么區(qū)別

加() 是分組 追問
不加()也是以list返回呀
4

正則表達(dá)式中 .* 與 .? 與 .*? 這三種寫法的區(qū)別是什么?

.任意字,*表示重復(fù)任意次數(shù),,+后的?表示非貪婪匹配 ,單個(gè)?表示匹配0或1次

.* 匹可能多的字符

.*? 只匹配滿足正則的最小字符串

.? 匹配 任意一個(gè)字符 ,或者在此位置無字符

如 字符串"acbabc" 正則"^.*b"匹配 "acbab",正則"^.*?b"匹配 "acb"

5

正則表達(dá)式 javascript和python有什么區(qū)別

基本上一致,沒有明顯區(qū)別
6

正則表達(dá)式中 ".?"的問號(hào)和".*"的星號(hào)的語義區(qū)別?

? 是 單字符匹配

* 是 多字符匹配

.? 是說 . 后面 跟著任意字符

.* 是說 . 后面 跟著 任意個(gè)數(shù)字符.,0個(gè),1個(gè),2個(gè)......

你的回答

單擊“發(fā)布您的答案”,即表示您同意我們的服務(wù)條款