【问题标题】:.NET Regex Grouping: Exclude String from group.NET 正则表达式分组:从组中排除字符串
【发布时间】:2014-04-15 21:29:02
【问题描述】:

当我在 .NET 中使用正则表达式时

(.+) (c b|b)

我有一个像“somestring c b”这样的字符串,我总是在第一组中得到“somestring c”,在第二组中得到“b”。

我想在第一组中获得“somestring”,在第二组中获得“c b”。

有什么想法吗?

【问题讨论】:

    标签: c# .net regex string regex-group


    【解决方案1】:
    (.+?) (c b|b)
    

    ? 是惰性限定符,表示匹配满足整个正则表达式所需的最少字符数。

    Here is a grid of them and more details

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是通过在加号后添加一个问号来使第一组不情愿,如下所示:

      (.+?) (c b|b)
      

      没有它,它就不会贪婪并匹配尽可能多的有效字符,在您的情况下,这意味着匹配第一组中的 c。

      【讨论】:

        【解决方案3】:

        将您想要匹配的内容放在括号内,并将“或”符号放在可接受的匹配项之间。例如,这个 RegEx 应该可以解决问题:

        (.+ b|b)
        

        【讨论】:

          【解决方案4】:

          按照下面的方法做

          (.+[^c]) (c b|b)
          

          Demo

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-06-28
            • 2011-05-05
            • 1970-01-01
            • 1970-01-01
            • 2015-10-06
            • 1970-01-01
            • 1970-01-01
            • 2017-04-13
            相关资源
            最近更新 更多