我有以下的正則表達式:正則表達式:用雙反斜線替換反斜槓,但與四反斜槓不是雙反斜線
s/\\/\\\\/g
這確實替換所有「\
」的人物了很好的工作與「\\
」 。但是,我想防止匹配與其他反斜槓相鄰的反斜槓。如果我這樣做:
s/[^\\]\\[^\\]/\\\\/g
它只捕獲不相鄰的反斜槓。但現在有一個明顯的問題,比賽包括兩個不應該被替換的相鄰字符。我該如何克服這一點?
我有以下的正則表達式:正則表達式:用雙反斜線替換反斜槓,但與四反斜槓不是雙反斜線
s/\\/\\\\/g
這確實替換所有「\
」的人物了很好的工作與「\\
」 。但是,我想防止匹配與其他反斜槓相鄰的反斜槓。如果我這樣做:
s/[^\\]\\[^\\]/\\\\/g
它只捕獲不相鄰的反斜槓。但現在有一個明顯的問題,比賽包括兩個不應該被替換的相鄰字符。我該如何克服這一點?
如何負先行指定「除非它後面跟着另一個斜線替換此斜槓」?
謝謝,作爲一個正則表達式初學者,我只需要聽到「lookahead」這個詞。我現在有我需要的東西。 – Odrade 2009-06-10 14:00:12
+1望遠鏡 – DevelopingChris 2009-06-10 14:00:24
如果你知道什麼轉義字符要匹配你永遠可以包括所有這些情況下(\ n,\ r,\ t,\」 ....)
S /([^ \\])\\([^ \\])/ $ 1 \\\\ $ 2 /克
隨着負前瞻性和負面看起來,這似乎工作:
"(?<!\\)\\(?!\\)"
在PowerShell中,這是結果:
"foo\\Bar foo\bar" -replace "(?<!\\)\\(?!\\)","\\"
foo\\Bar foo\\bar
這也導致foo\\\bar
並未受到任何影響 - 可能會或可能不適合。
你需要做某種事情,除非通常採用前瞻 – DevelopingChris 2009-06-10 13:59:43