使用正则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);
。 等等。