我想找到一個正則表達式(正則表達式),檢測您是否在C雙引號轉義字符串中有一些無效轉義(您可以在其中找到只有轉義的雙引號)。如何使用正則表達式檢測無效的C轉義字符串?
我認爲有效\\
\n
\r
\"
(測試字符串使用「)
的部分解決方案,這是使用(?<!\\)\\[^\"\\nr]
但是這一次沒有檢測到類似\\\
壞逃逸。
這裏是一個測試字符串,我用它來測試匹配:
...\n...\\b...\"...\\\\...\\\E...\...\\\...\\\\\..."...\E...
該表達式應該將最後6個塊作爲無效,前4個有效。問題是我目前的版本只能找到2/5錯誤。
\\\ E是無效的 - 第一個斜槓逃脫第二個,第三個試圖逃脫E ... – 2009-12-09 12:58:29
所以,你想測試一個*雙引號字符串*包含無效的轉義序列? – Gumbo 2009-12-09 13:43:58
不要忘記,C編譯器實際上允許:簡單字符的'\ t \ b \ v \ f \ a \?\'';它們也允許'\ o \ oo \ ooo'用於八進制轉義,'\ xX \ xXX'用於十六進制(實際上名義上超過兩個十六進制數字)。而C99也允許'\ uXXXX'和'\ U00XXXXXX'爲十六進制編碼的Unicode字符。 – 2009-12-09 18:30:53