使用C#Regex的多个正则表达式选项

时间:2011-11-15 20:00:50

标签: c# .net regex

假设我有这个:

Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase);

但我也需要忽略空格。所以,我找到了一个选项IgnorePatternWhitespace,但是如何在一个regex.Replace中添加几个选项呢? 类似的东西:

Regex.Replace("aa cc bbbb", "aa cc", "", 
    RegexOptions.IgnoreCase + RegexOptions.IgnorePatterWhitespace);

更新
感谢您的回答,但此选项似乎不起作用:这是一个测试示例:

Regex.Replace("aa cc bbbb", "aacc", "", 
    RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);

5 个答案:

答案 0 :(得分:57)

使用bitwise OR (|)

Regex.Replace("aa cc bbbb",
                "aa cc",
                "",
                RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 

答案 1 :(得分:11)

Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace);

使用|运算符。

修改:

你完全错了。 RegexOption.IgnorePatterWhitespace忽略正则表达式中的空格,以便您可以执行以下操作:

string pattern = @"
^                # Beginning of The Line
\d+              # Match one to n number but at least one..
";

然而,您认为加入空格会使"aa cc bbbb"成为"aaccbbbb",这是值得怀疑的。

答案 2 :(得分:7)

根据MSDN

  

RegexOption枚举值的按位OR组合。

所以只需使用OPT_A | OPT_B

答案 3 :(得分:3)

您可以拥有任意数量的RegexOptions,只需将“OR”与“|”一起使用。

例如......

RegexOptions.Compiled | RegexOptions.IgnoreCase

答案 4 :(得分:2)

  

<强> IgnorePatternWhitespace
  从模式中消除未转义的空白区域并启用注释   标有#。但是,IgnorePatternWhitespace值   影响或消除字符类中的空格。

这样:

string result = Regex.Replace("aa cc bbbb","aa|cc","",RegexOptions.IgnoreCase).Trim();