C# 为什么IgnorePatternWhitespace会破坏正则表达式?

C# 为什么IgnorePatternWhitespace会破坏正则表达式?,c#,.net,regex,C#,.net,Regex,伪1和伪2不会引发异常,但伪3会引发异常。此外,dummy2似乎没有正确运行我的正则表达式(从较长的真实版本判断)。为什么这些不同?第一个在模式中没有空格,另外两个应该忽略空格来创建相同的模式 把它全部放在一行很好,但阅读和编辑起来比较困难 Regex dummy1 = new Regex(@"(^\s*#(?<test>.*))", RegexOptions.Compiled ); Regex dummy2 = new Regex(@"(^\s*#(?<tes

伪1和伪2不会引发异常,但伪3会引发异常。此外,dummy2似乎没有正确运行我的正则表达式(从较长的真实版本判断)。为什么这些不同?第一个在模式中没有空格,另外两个应该忽略空格来创建相同的模式

把它全部放在一行很好,但阅读和编辑起来比较困难

    Regex dummy1 = new Regex(@"(^\s*#(?<test>.*))", RegexOptions.Compiled );
    Regex dummy2 = new Regex(@"(^\s*#(?<test>.*)
)", RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
    Regex dummy3 = new Regex(@"(^\s*#(?<test>.*))", RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
Regex-dummy1=new Regex(@“(^\s*#(?*)”,RegexOptions.Compiled);
正则表达式dummy2=新正则表达式(@“(^\s*#)(?*))
)“,RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
Regex dummy3=new Regex(@“(^\s*#(?*)”,RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
来自

忽略模式空白从模式中消除未替换的空白,并启用标记为#的注释

#
(包括在内)的所有内容都被视为注释

在第二个示例中也是如此,但在这种情况下,下一行的
与第一行的
相平衡

因此,第二个正则表达式模式实际上是
(^\s*)
,第三个是
(^s*)
,这是无效的


您可能想用
\\\\\\

替换
\\\\\\\

dummy 3抛出了什么异常?@Rui当问题与空白直接相关时,删除换行符可以打断问题;p@MicrosoftDN“不够”)的“好吧,好吧,我错了,对不起!我想我需要一杯咖啡:)