Regex 用单个正则表达式替换多个字符串Replace()。Replace()

Regex 用单个正则表达式替换多个字符串Replace()。Replace(),regex,c#-4.0,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 问题是

如果我在做这样的事情:

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+")")
试试这个:

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

当我尝试它时,它确实起了作用。我认为您的代码不起作用的原因是您忘记了替换字符串,并且必须在路径中转义反斜杠。

我假设“不起作用”的是您的C:\windows替换。你需要

someString = Regex.Replace(someString, @"(?:abc|def|C:\\windows)","");
问题是你需要避开反斜杠。未加修饰的反斜杠在正则表达式中具有含义。特别是,在这种情况下,\W实际上匹配任何非字母数字字符


编辑要转义任意字符串,可以使用
Regex.escape(yourString)

确保所有反斜杠都已转义
\
应该是
\
如果我传递这样的路径:Regex.Replace(someString,@“(?:abc | def |“+aPath+”,”)
someString = Regex.Replace(someString, @"(?:abc|def|C:\\windows)","");