regex.replace没有替换任何东西

时间:2015-10-07 08:20:43

标签: c# regex

我想替换像\"这样的字符串中的\"someword\"个字符。但是这个正则表达式"(\\\")+"不起作用。

Regex.Replace(string_, "(\\\")+", String.Empty);

2 个答案:

答案 0 :(得分:2)

非转义报价删除

如果您的任务只是删除所有未转义的双引号,则不需要任何正则表达式,只需使用

s = old_s.Replace("\"", string.Empty);

字面上转义的引号

如果您的输入中不仅有双重报价转义,您还需要一个更强大的解决方案,以保持所有其他转义符号的完整性。可以使用匹配评估器:

var old_text= @"\\""someword\"""; // Literal \\"someword\", escaped backslash at the start
var stext = Regex.Replace(old_text, @"\\(.)", 
               m => m.Groups[1].Value == "\"" ? "\"" : m.Groups[1].Value);

结果 - 只有最后一个"被更改,因为它是唯一的字面转义双引号:

enter image description here

答案 1 :(得分:1)

尝试:

var myNewString = Regex.Replace(string_, "(\\\")+", String.Empty);

MSDN Regex.Replace documentation可以看到此方法的返回值为string

文档说明此值为:

  

返回值

     

类型:System.String

     

与...相同的新字符串   输入字符串,但替换字符串代替   每个匹配的字符串如果模式在当前不匹配   例如,该方法返回当前实例。