Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 - Fatal编程技术网

C# 正则表达式';忽略大小写';选项没有';当';已编译';选项已指定

C# 正则表达式';忽略大小写';选项没有';当';已编译';选项已指定,c#,regex,C#,Regex,我有以下非常简单的正则表达式,它匹配字符串中的HTML标记。我设置了不区分大小写的选项,因此标记的大写并不重要。但是,当设置“compiled”选项时,“IgnoreCase”选项似乎被忽略 示例代码: string text = "<SPAN>blah</SPAN><span>blah</span>"; Regex expr1 = new Regex("</*span>", RegexOptions.IgnoreCase); Rege

我有以下非常简单的正则表达式,它匹配字符串中的HTML标记。我设置了不区分大小写的选项,因此标记的大写并不重要。但是,当设置“compiled”选项时,“IgnoreCase”选项似乎被忽略

示例代码:

string text = "<SPAN>blah</SPAN><span>blah</span>";
Regex expr1 = new Regex("</*span>", RegexOptions.IgnoreCase);
Regex expr2 = new Regex("</*span>", RegexOptions.IgnoreCase & RegexOptions.Compiled);

MatchCollection result1 = expr1 .Matches(text); 
//gives 4 matches- <SPAN>,</SPAN>,<span> & </span>
MatchCollection result2 = expr2 .Matches(text);
//only gives 2 matches- <span> & </span>
string text=“blahblah”;
Regex expr1=new Regex(“,RegexOptions.IgnoreCase);
Regex expr2=new Regex(“,RegexOptions.IgnoreCase&RegexOptions.Compiled);
MatchCollection result1=expr1.Matches(文本);
//给出4个匹配项-、、&
MatchCollection result2=expr2.Matches(文本);
//仅给出2个匹配项-&

有人知道这里发生了什么吗?

您使用的是按位或,对于您的标志,您应该使用按位或

此位:

RegexOptions.IgnoreCase & RegexOptions.Compiled
应该是:

RegexOptions.IgnoreCase | RegexOptions.Compiled

我总是犯那个错误。我正在写我的标志,我会大声说“我想要选项A和选项B…”。除了这个问题之外,“
”不是更好的正则表达式吗?是的,在考虑了更多之后,可能更好。