2013-12-22 2 views
1

Я нашел следующий код из этого вопроса, regex to match everything until it finds 2 upper case characters?регулярное выражение, чтобы соответствовать все, пока не достигнет верхнего регистра

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

однако мой вопрос немного отличается, то OP

Я хочу, чтобы соответствовать все, вплоть до верхней case в следующей строке: правила должны соответствовать всем, пока он не найдет отрицательные образы, набирает 2 символа верхнего регистра, а затем сопоставляет все между ними от первого прописного слова до начала второго символа верхнего регистра

так что я хочу (продолжить на примере оп)

Http is an HttpHeader 

, чтобы получить Http is an Http

вместо Http is an который OP получает в публикуемую нить

+2

Вы можете уточнить свои правила? Ваш пример не соответствует вашему описанию, как соответствует всем, пока верхний регистр не вернет ничего, поскольку первый верхний регистр является первым символом. – psubsee2003

+0

Согласен с @ psubsee2003 - в результате вы хотите, чтобы * * * * верхние символы с обложкой! –

+0

Возможный дубликат [RegEx to split camelCase или TitleCase (расширенный)] (http://stackoverflow.com/questions/7593969/regex-to-split-camelcase-or-titlecase-advanced) – mvp

ответ

0

Кажется слишком сост. мне

preg_match('/[^A-Z]+/', $str, $res); 
0
preg_match('/[^A-Z]*([A-Z]{1}[^A-Z]*[A-Z]{1}[^A-Z]*)/', $str, $res); 
0

использовать этот шаблон ^.*?(?=\b(?:[^\sA-Z]*[A-Z]){2}).+?(?=[A-Z])Demo

0
([A-Z].*?\w+(?=[A-Z])) 

Вы можете следовать выше регулярное выражение. Это так просто и быстро. См. Соответствующие группы здесь: Live demo

Смежные вопросы