Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含正则表达式分隔符的简单且经过测试的在线正则表达式在C#代码中不起作用_C#_Regex_Windows Runtime - Fatal编程技术网

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

包含正则表达式分隔符的简单且经过测试的在线正则表达式在C#代码中不起作用,c#,regex,windows-runtime,C#,Regex,Windows Runtime,我有一个这样的正则表达式: 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#中,不能使用正则表达式分

我有一个这样的正则表达式:

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或其他支持
/(/)/modifiers
regex声明的语法

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

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