用单个Regex.Replace()替换多个字符串Replace()

时间:2012-07-18 19:54:53

标签: regex c#-4.0

如果我这样做的话:

someString.Replace("abc","").Replace("def","").Replace(@"c:\Windows","")

如何用

替换它
Regex.Replace(someString," \\here I don't know what the pattern should be")

我试过这个:

Regex.Replace(someString, @"(?:abc|def|c:\Windows)")

但它无效

UPD ......

问题是当我通过这样的路径时

Regex.Replace(someString, @"(?:abc|def|"+aPath+")")

2 个答案:

答案 0 :(得分:6)

`But it didnt work` doesn't say much helpfull!

试试这个:

someString = Regex.Replace(someString, @"(?:abc|def|ghi|c:\\Windows)", "")

我尝试的时候确实有效。我认为你的代码不起作用的原因是因为你忘记了替换字符串而你必须逃避路径中的反斜杠。

答案 1 :(得分:3)

我假设"没有工作"是你的C:\ windows替代品。你需要

someString = Regex.Replace(someString, @"(?:abc|def|C:\\windows)","");

问题是你需要逃避反斜杠。未转义的反斜杠在正则表达式中有意义。特别是,在这种情况下,\ W实际上匹配任何非字母数字字符。

修改以转义任意字符串,您可以使用Regex.Escape(yourString);