匹配引號之外的實例
與先前的假設相反,可以匹配給定正則表達式不在引號內的所有實例使用正規表示式的字串部分,甚至考慮轉義引號。
正規表示式解決方案
要實現此目的,請利用前瞻斷言來檢查每個單字是否是在引號之外,當其後有偶數個引號時會發生這種情況。下面的正規表示式捕捉了此模式:
\+(?=([^"]*"[^"]*")*[^"]*$)
處理轉義引號
要處理轉義引號,請修改表達式以忽略反斜線並前進到下一個未轉義引號:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
這確保轉義引號不會被計算為左引號。
JavaScript 與.split() 和.replace() 的用法
為了與JavaScript 的.split() 和.replace() 方法一起使用,可以使用以下程式碼:
const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"
以上是如何匹配帶引號的字串之外的正規表示式實例,即使帶有轉義引號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!