Php 正则表达式匹配所有内容,直到达到大写

Php 正则表达式匹配所有内容,直到达到大写,php,regex,Php,Regex,我从这个问题中找到了以下代码 然而,我的问题与OP略有不同 我想将所有内容匹配到下面字符串中的大写字母, 规则应该匹配所有内容,直到负环视找到2个大写字符,然后匹配从第一个大写字符到第二个大写字符开始之间的所有内容 所以我想要(从op示例继续) 是获取Http是Http Http不是一个,而是一个OP在发布线程中得到的似乎过于复杂。对我来说 preg_match( '/[^A-Z]+/', $str, $res ); 使用此模式^.*?(?=\b(?[^\sA-Z]*[A-Z]){2})。+?

我从这个问题中找到了以下代码

然而,我的问题与OP略有不同

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

所以我想要(从op示例继续)

是获取
Http是Http


Http不是一个,而是一个OP在发布线程中得到的

似乎过于复杂。对我来说

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

使用此模式
^.*?(?=\b(?[^\sA-Z]*[A-Z]){2})。+?(?=[A-Z])


您可以遵循上面的正则表达式。这很简单,但速度很快。请参见此处的匹配组:

您能澄清您的规则吗?您的示例与您的描述不匹配,因为它与所有内容都匹配,直到大写字母不返回任何内容,因为第一个大写字母是第一个字符agree with@psubsee2003——您想要的结果包含两个大写字符!@mvp的可能副本实际上无法按预期工作,请参见使用
(?)?
Http is an HttpHeader
preg_match( '/[^A-Z]+/', $str, $res );
preg_match('/[^A-Z]*([A-Z]{1}[^A-Z]*[A-Z]{1}[^A-Z]*)/', $str, $res);
([A-Z].*?\w+(?=[A-Z]))