2

Dummy 1 和 2 不会抛出异常,但 dummy 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);
4

1 回答 1

8

来自MSDN

IgnorePatternWhitespace从模式中消除未转义的空白并启用标有 #... 的注释

(含)中的所有内容都#被视为评论

在第二个示例中也是如此,但在这种情况下),下一行的 平衡(了第一行的。

所以第二个正则表达式模式实际上是(^\s*)- 而第三个是(^s*- 这是无效的。

你可能想#\#.

于 2013-09-17T10:05:52.240 回答