RegEx正在用斜线替换空格

时间:2015-05-26 17:33:43

标签: c#

我使用以下代码进行不区分大小写的替换:

returned = Regex.Replace(source, Regex.Escape(oldValue), 
                                 Regex.Escape(newValue), 
                                 RegexOptions.IgnoreCase);

但是Regex.Escape会导致我的空格被\

替换
source = "Description: <module>";
oldValue = "<module>";
newValue = "Module 1 - Upload Data File";
returned = "Description: Module\ 1\ -\ Upload\ Data\ File";

我知道如果我删除Regex.Escape它会有效但我说实话我不记得我使用Regex.Escape的原因但是我必须有理由而且我不会这样做。我想打破以前的工作。

我知道如何解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

  

Regex.Escape方法:转义一组最小字符(\,*,+,?,|,{,[,(,),^,$ ,.,#和白色)通过用它们的转义码替换它们。这指示正则表达式引擎按字面解释这些字符而不是元字符。

您不应该转义newValue变量,因为它会用转义代码替换任何空格:

来自:' ' - &gt;致:'\ '

尝试从Regex.Escape中删除Regex.Escape(newValue),它应该有效。