【问题标题】:Multiple regex options with C# RegexC# 正则表达式的多个正则表达式选项
【发布时间】:2011-11-15 20:00:49
【问题描述】:

假设我有这个:

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);

【问题讨论】:

  • “似乎不起作用”的信息量不是很大。你具体追求什么样的行为?
  • 这作为一个问题根本没有意义——尤其是当你看到接受的答案是什么,但即使在这个上下文之外!
  • 用 & 代替 +, Regex.Replace("aa cc bbb", "aa cc","", RegexOptions.IgnorePatternWhitespace & RegexOptions.IgnoreCase)
  • vb.net 版本 = Regex.Replace("aa cc bbb", "aa cc", String.Empty, RegexOptions.IgnorePatternWhitespace 和 RegexOptions.IgnoreCase)
  • | 运算符运行良好:C# working code demo ;)。

标签: c# .net regex


【解决方案1】:

使用bitwise OR (|)

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

【讨论】:

  • @user194076,如果您希望正则表达式“aacc”匹配“aa cc bbbb”中的“aa cc”,那么您对 ​​RegexOptions 的解释不正确。您必须使用“aa\s?cc”之类的东西来匹配它,即使用 \s?匹配可选的空格。 Regex.Replace("aa cc bbbb","aacc","",RegexOptions.IgnoreCase |
【解决方案2】:
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",这是非常错误的。

【讨论】:

    【解决方案3】:

    根据MSDN

    RegexOption 枚举值的按位或组合。

    所以只需使用OPT_A | OPT_B

    【讨论】:

      【解决方案4】:

      您可以拥有任意数量的 RegexOptions,只需用“|”“或”它们即可。

      例如...

      RegexOptions.Compiled | RegexOptions.IgnoreCase
      

      【讨论】:

        【解决方案5】:

        IgnorePatternWhitespace
        从模式中消除未转义的空白并启用 cmets 标有#。但是,IgnorePatternWhitespace 值 影响或消除字符类中的空白。

        所以:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-29
          • 1970-01-01
          • 1970-01-01
          • 2015-12-13
          • 1970-01-01
          相关资源
          最近更新 更多