我有以下的正則表達式爲什麼不能「 B w +(?=荷蘭國際集團) B」匹配「我唱歌,當你跳舞」
var reg = /\b\w+(?=ing)\b/g;
var str = "I'm singing while you're dancing";
str.match(reg) // ==>null
但是,如果正則表達式是/\b\w+(?=ing\b)/g
那麼str可以匹配'sing,danc'
爲什麼那個mach,但我以前的例子不是?
我有以下的正則表達式爲什麼不能「 B w +(?=荷蘭國際集團) B」匹配「我唱歌,當你跳舞」
var reg = /\b\w+(?=ing)\b/g;
var str = "I'm singing while you're dancing";
str.match(reg) // ==>null
但是,如果正則表達式是/\b\w+(?=ing\b)/g
那麼str可以匹配'sing,danc'
爲什麼那個mach,但我以前的例子不是?
因爲(?=ing)
是零長度匹配。所以你試圖匹配一個或多個單詞字符,然後跟着'ing',同時跟着一個單詞邊界。
由於單詞邊界是從單詞字符到非單詞字符的變化,因此後跟「i」的單詞字符後面沒有字邊界。
/\b\w+(?=ing\b)/g
與'sing,danc'中的's'匹配,因爲','是一個非單詞字符 - 因此'g'和','之間有一個單詞邊界。爲了找到正確的正則表達式,你需要更清楚地說明爲什麼'唱歌,跳舞'不應該匹配。
請勿過分複製正則表達式:'/ \ b \ w + ing \ b/g'。 – deceze
他不想匹配ing部分 – marvel308
@ marvel308他在javascript中我們可以提取捕獲組。更嚴重的問題是他不想匹配'sing,danc',所以\ b是錯誤的事情來測試。 - 但沒有明確說明爲什麼'唱歌,跳舞'的比賽是錯誤的發現正確的人物組是不可能的。 – Taemyr