我有以下的正则表达式:正则表达式:用双反斜线替换反斜杠,但与四反斜杠不是双反斜线
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