正則表達(dá)式貪婪模式 正則表達(dá)式里面 .* 和 .*? 有什么區(qū)別?
正則表達(dá)式里面 .* 和 .*? 有什么區(qū)別?表情。*任何時(shí)候都是單個(gè)字符匹配,即貪婪匹配。表達(dá)式。*? 滿足條件時(shí)只匹配一次,即最小匹配。s匹配任何空白的非打印字符,包括空格、制表符、分頁(yè)符等。相當(dāng)
正則表達(dá)式里面 .* 和 .*? 有什么區(qū)別?
表情。*任何時(shí)候都是單個(gè)字符匹配,即貪婪匹配。表達(dá)式。*? 滿足條件時(shí)只匹配一次,即最小匹配。s匹配任何空白的非打印字符,包括空格、制表符、分頁(yè)符等。相當(dāng)于[fnRtv]。請(qǐng)注意,Unicode正則表達(dá)式匹配全寬空格字符。S匹配任何非空白、不可打印的字符。相當(dāng)于[^fnRtv]。*限定符是貪婪的,因?yàn)樗鼈兤ヅ浔M可能多的單詞。只添加一個(gè)?之后可以實(shí)現(xiàn)非貪婪或最小匹配。例如:<h1>chapter1-引入正則表達(dá)式</H1>使用/<.*>/匹配的結(jié)果是:H1>chapter1-引入正則表達(dá)式</H1。使用/&Lt.*?>/,匹配結(jié)果為:H1。在Lua中,修飾符-和*用于0次或多次匹配前一個(gè)字符,但是-是最短匹配,類似于傳統(tǒng)正則化中的非貪婪匹配,而*是最長(zhǎng)匹配,即貪婪匹配。因?yàn)樵谡齽t化的最后一個(gè)之后沒(méi)有任何東西,所以這是最短的匹配,也就是說(shuō),沒(méi)有任何東西匹配,所以1999年沒(méi)有被捕獲。添加$后,由于結(jié)束標(biāo)識(shí)符的原因,必須匹配-1999才能進(jìn)行整個(gè)常規(guī)匹配過(guò)程,因此捕獲1999?;蛘吣憧梢杂?替換最后一個(gè)-或者你可以捕獲1999
首先,讓我們來(lái)談?wù)勥@些組件的基本含義:
W是匹配下劃線,數(shù)字和字母
W是匹配所有不同于W
[]的字符
+表示至少匹配一個(gè)字符。表示任何字符。那么這樣的組合,[ww]和似乎沒(méi)有區(qū)別。它匹配任何字符,字符長(zhǎng)度至少為1。
但是,有一點(diǎn)不同。它不能匹配空白,也就是說(shuō),如果文本段落中有空格、換行符、制表符等,則無(wú)法完成匹配,[ww]不存在這樣的問(wèn)題。
另外,我想給你一個(gè)小建議。這是貪婪的直接匹配。如果沒(méi)有其他約束,最好添加一個(gè)?,表示非貪婪匹配。