Regexp 的貪婪和非貪婪模式

2021-08-22 00:19:48 字數 1223 閱讀 3076

下面給幾個例子:

//不加問號預設為貪婪

var reg = /a.*c/

var string = 'aaaccaa'

var result = string.match(reg) // ["aaacc",....]

//加上問號為非貪婪

var reg = /a.*?c/

var string = 'aaaccaa'

var result = string.match(reg) // ["aaac",....]

上面例子中當為貪婪的時候它會一直往下早c,直到最後乙個c,當為非貪婪的時候,由於是盡可能少的匹配這個時候匹配到第乙個c就結束

var reg =  /[\s\s]*\s*(?=)/g

var string = `藍色理想

介面設計測試規範

《古典寫實美女》漫畫教程

安遠――消失的光年

asp.net 2.0多語言**解決方案

`var result = string.match(reg)

上面是貪婪匹配,它的結果(result)如下截圖:

可以看到他將整個字串都匹配了,這是由於它匹配的時候,先找到開始的title標籤,然後繼續匹配,當遇到結束的title標籤的時候,由於是貪婪模式,它會繼續往下找是否還有結束的title標籤,如果有那麼就繼續匹配,在上面的例子中就匹配到最後乙個title結束標籤。

var reg =  /[\s\s]*?\s*(?=)/g

var string = `藍色理想

介面設計測試規範

《古典寫實美女》漫畫教程

安遠――消失的光年

asp.net 2.0多語言**解決方案

`var result = string.match(reg)

上面使用的是非貪婪模式,結果(result)如下截圖

上面的例子中,由於是非貪婪模式,開始匹配到第乙個開始標籤,然後繼續匹配,當遇到第乙個結束標籤的時候,由於是非貪婪模式,這個時候,就結束匹配,開始匹配下一組。

注意:在例二中需要注意結束匹配的時候還會將正則當中後面加上的標籤匹配上去

貪婪模式和非貪婪模式

1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到 abcaxc ab c 非貪婪匹配 就是匹配到結果就好,就少的匹配字元。如上面...

貪婪模式和非貪婪模式

正規表示式通常使用於查詢匹配的字串。python裡數量詞預設是貪婪的 在少數語言裡也可能預設是非貪婪 總是嘗試匹配盡可能多的字元 非貪婪模式剛好相反,總是嘗試匹配盡可能少的字元。例如,正規表示式 ab 如果用於查詢 abbbc 就會找到 abbb 如果使用非貪婪的數量詞 ab 就會找到 a 例如1 ...

貪婪和非貪婪

python裡數量詞預設是貪婪的 在少數語言裡也可能是預設非貪婪 總是嘗試匹配盡可能多的字元 非貪婪則相反,總是嘗試匹配盡可能少的字元。在 後面加上?使貪婪變成非貪婪。s this is a number 234 235 22 423 r re.match d d d d s r.group 1 4...