我想替换像\"
这样的字符串中的\"someword\"
个字符。但是这个正则表达式"(\\\")+"
不起作用。
Regex.Replace(string_, "(\\\")+", String.Empty);
答案 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);
结果 - 只有最后一个"
被更改,因为它是唯一的字面转义双引号:
答案 1 :(得分:1)
尝试:
var myNewString = Regex.Replace(string_, "(\\\")+", String.Empty);
从MSDN Regex.Replace documentation可以看到此方法的返回值为string
文档说明此值为:
返回值
类型:System.String
与...相同的新字符串 输入字符串,但替换字符串代替 每个匹配的字符串如果模式在当前不匹配 例如,该方法返回当前实例。