正则表达式:使用双反斜杠替换反斜杠,但不使用四反斜杠替换双反斜杠

时间:2009-06-10 13:54:46

标签: regex

我有以下正则表达式:

s/\\/\\\\/g

这可以用“\”替换所有“\\”字符。但是,我想防止匹配与其他反斜杠相邻的反斜杠。如果我这样做:

s/[^\\]\\[^\\]/\\\\/g

它只捕获不相邻的反斜杠。但是现在有一个明显的问题,即匹配包括两个不应被替换的相邻字符。我怎么能克服这个?

4 个答案:

答案 0 :(得分:4)

否定前瞻如何指定“替换此斜杠,除非后面跟着另一个斜杠”?

答案 1 :(得分:1)

负面的前瞻和消极的后视,这似乎有效:

"(?<!\\)\\(?!\\)"

在PowerShell中,结果如下:

"foo\\Bar foo\bar" -replace "(?<!\\)\\(?!\\)","\\"
foo\\Bar foo\\bar

这也会导致foo\\\bar不受影响 - 可能适合也可能不适合。

答案 2 :(得分:0)

如果您知道要匹配的转义字符,您可以随时包含所有这些情况(\ n,\ r \ n,\ t,\“......)

答案 3 :(得分:0)

S /([^ \\])\\([^ \\])/ $ 1 \\\\ $ 2 /克