包含正则表达式定界符的简单且经过测试的在线正则表达式在 C# 代码中不起作用

Simple and tested online regex containing regex delimiters does not work in C# code

我有这样的正则表达式:

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

此正则表达式应替换“/”、“-”、“.”和 ””。 但是没有,有人能解释一下为什么吗?

不要使用正则表达式分隔符:

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

在 C# 中,您不能使用正则表达式定界符,因为声明正则表达式的语法不同于 PHP、Perl 或 JavaScript 或其他支持 <action>/<pattern>(/<substituiton>)/modifiers 正则表达式声明的语法.

只是为了避免术语混淆:内联修饰符(强制搜索不区分大小写,多行,单行,冗长等模式)当然是支持的,可以用来代替相应的RegexOptions 标志(尽管可能的 RegexOptions 标志数量高于内联修饰符)。不过,正则表达式定界符 根本不会影响正则表达式模式,它们只是声明语法的一部分,不会影响模式本身。比如说,它们只是 ; 或换行符分隔代码行的一种替代品。

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