我有以下正则表达式:
s/\\/\\\\/g
这可以用“\
”替换所有“\\
”字符。但是,我想防止匹配与其他反斜杠相邻的反斜杠。如果我这样做:
s/[^\\]\\[^\\]/\\\\/g
它只捕获不相邻的反斜杠。但是现在有一个明显的问题,即匹配包括两个不应被替换的相邻字符。我怎么能克服这个?
答案 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 /克