Сопоставляйте слова, начинающиеся с заглавной буквы, пока не появится слово, начинающееся с заглавной буквы

#regex

#регулярное выражение

Вопрос:

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

 Animals Chicken helmet Animal baby kids Crazy 6 yo monkey Baby white-black horse
 

Match: / содержит строчные буквы, цифры, специальные символы

Animals Chicken helmet Animal baby kids Crazy 6 yo monkey Baby white-black horse

я попробовал это

 (^[A-Za-z] s?w W ?d?) 
 

Ответ №1:

Вы можете использовать

 b[A-Z]S*(?:s [^A-Zs]S*)*
 

Смотрите демонстрацию регулярных выражений.

Подробные сведения

  • b — граница слова (если слова разделены пробелами, замените на (?<!S) )
  • [A-Z]S* — заглавная буква ASCII (замените на p{Lu} , если поддерживается поддержка Unicode), а затем любые нулевые или более символов, не содержащих пробелов
  • (?:s [^A-Zs]S*)* — ноль или более случаев
    • s — один или несколько пробелов
    • [^A-Zs] — любой символ, кроме пробела и заглавной буквы ASCII (используйте [^p{Lu}s] , если поддержка Uniocde необходима и поддерживается)
    • S* — любые нулевые или более символов, не содержащих пробелов