我有这样一个正则表达式:
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正则表达式声明的语法。
<action>/<pattern>(/<substituiton>)/modifiers
只是为了避免术语混乱:肯定支持 内联修饰符 (强制不区分大小写的搜索,多行,单行,详细模式和其他模式),并且可以使用内联修饰符代替相应的RegexOptions标志(尽管可能的RegexOptions标志数量大于内联修饰符的数量) )。但是, 正则表达式定界符 根本不影响正则表达式模式,它们只是声明语法的一部分,并且不影响模式本身。说,它们只是;代码行的替代品或换行符。
RegexOptions
;
在C#中,正则表达式定界符不是必需的,因此不受支持。Perl样式s/\W//g将写为var replaced = Regex.Replace(str, @"\W", string.Empty);。等等。
s/\W//g
var replaced = Regex.Replace(str, @"\W", string.Empty);