我正在尋找與代碼編輯器中使用的語法熒光筆的字串匹配的正則運算式。我找到了
(")(?:(?!\1|\\).|\\.)*\1
從這里regex-grabbing-values-between-quotation-marks(我改變了開頭,因為我只需要雙引號,沒有單引號)
上面的正則運算式正確匹配以下具有轉義雙引號和轉義反斜杠的示例
"this is \" just a test\\"
然而,大多數代碼編輯器也會突出顯示開放式字串,例如以下示例
"this must \" match\\" this text must not be matched "this text must be matched as well
是否可以更改上述正則運算式以匹配開放式字串?另一種可能性是第二個正則運算式,它只匹配開放式字串,例如
"[^"]*$ but match only if preceded by an even count of non-escaped quotes
uj5u.com熱心網友回復:
您可以使用交替來匹配對第 1 組的反向參考或使用當前模式斷言字串的結尾。
(")(?:(?!\1|\\).|\\.)*(?:\1|$)
但是由于您只捕獲一個字符("),您可以省略捕獲組,而不是反向參考\1只是匹配"
替代書寫模式:
"[^"\\]*(?:\\.[^"\\]*)*(?:"|$)
查看正則運算式演示。
如果匹配不應該開始\"并且支持后向:
(?<!\\)"[^"\\]*(?:\\.[^"\\]*)*(?:"|$)
此模式匹配:
(?<!\\)\負向后看,不直接向左斷言"匹配雙引號[^"\\]*可選匹配任何字符,除了"or\(?:\\.[^"\\]*)*可選地重復匹配\和任何字符后跟任何字符,除了"或\(?:"|$)匹配"或斷言字串的結尾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455716.html
下一篇:在字串串列中查找公共字串C#
