【问题标题】:regex to match everything until it hits uppercase正则表达式匹配所有内容,直到它达到大写
【发布时间】:2014-01-10 14:16:17
【问题描述】:

我从这个问题中找到了以下代码,regex to match everything until it finds 2 upper case characters?

^.*(?=\b(?:[^\sA-Z]*[A-Z]){2})

但是我的问题与 OP 略有不同

我想匹配以下字符串中的所有内容,直到大写, 规则应该匹配所有内容,直到它否定环视找到 2 个大写字符,然后匹配从第一个大写字母到第二个大写字符开始之间的所有内容

所以我想要(继续操作示例)

Http is an HttpHeader

就是得到Http is an Http

而不是Http is an OP 正在发布的线程中

【问题讨论】:

  • 你能澄清你的规则吗?您的示例与您的描述不匹配,直到大写不返回任何内容,因为第一个大写是第一个字符
  • 同意@psubsee2003——你想要的结果包含两个大写字符!
  • @mvp 实际上并没有按预期工作,请参阅regex101.com/r/bO7aP8
  • 使用(?<! )(?=[A-Z])

标签: php regex


【解决方案1】:

似乎过于复杂。对我来说

preg_match( '/[^A-Z]+/', $str, $res );

【讨论】:

    【解决方案2】:
    preg_match('/[^A-Z]*([A-Z]{1}[^A-Z]*[A-Z]{1}[^A-Z]*)/', $str, $res);
    

    【讨论】:

      【解决方案3】:

      使用这个模式^.*?(?=\b(?:[^\sA-Z]*[A-Z]){2}).+?(?=[A-Z])Demo

      【讨论】:

        【解决方案4】:
        ([A-Z].*?\w+(?=[A-Z]))
        

        您可以遵循上述正则表达式。这很简单,但速度很快。在此处查看匹配组:Live demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-17
          • 2017-09-02
          • 2011-09-26
          • 1970-01-01
          • 1970-01-01
          • 2011-04-13
          • 1970-01-01
          • 2011-09-15
          相关资源
          最近更新 更多