使用正则expression式去除所有非单词字符(C#正则expression式模式中的正则expression式分隔符)

我有这样的正则expression式:

name = dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487 name = Regex.Replace(name, @"/\W/g", ""); 

这个正则expression式应该replace“/”,“ – ”,“。” 与“”。 但它不,有人可以解释我为什么?

不要使用正则expression式分隔符:

 name = Regex.Replace(name, @"\W", ""); 

在C#中,不能使用正则expression式分隔符作为声明正则expression式的语法不同于PHP,Perl或JavaScript或其他支持<action>/<pattern>(/<substituiton>)/modifiers正则expression式声明的语法。

只是为了避免术语混淆: 内联修饰符 (强制执行不区分大小写的search,多行,单行,详细和其他模式)肯定受支持,可以用来代替相应的RegexOptions标志(尽pipe可能的RegexOptions标志的数量高于内联修饰符)。 不过, 正则expression式分隔符完全不影响正则expression式模式,它们只是声明语法的一部分,不会影响模式本身。 说,他们只是一种替代品; 或换行分隔代码行。

在C#中,正则expression式分隔符是不必要的,因此不支持。 Perl风格的s/\W//g将被写成var replaced = Regex.Replace(str, @"\W", string.Empty); 。 等等。