Удалить всё от начала до второго встретившегося символа в верхнем регистре, перед которым должен быть пробел

Исходный текст:

Капельная кофеварка Melitta Aroma Elegance DeLuxe

Должно получится:

Melitta Aroma Elegance DeLuxe

Пробовал такой регуляркой заменять на пустоту: ^((?:.*?[А-ЯA-Z]){2})

Но удаляет и вхождение, т.е. получается:

elitta Aroma Elegance DeLuxe

Ответы (1 шт):

Автор решения: Wiktor Stribiżew

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

^[А-ЯЁA-Z].*?\s(?=[А-ЯЁA-Z])

Если есть поддержка символьных классов Юникода, можно заменить [А-ЯЁA-Z] на \p{Lu}:

^\p{Lu}.*?\s(?=\p{Lu})

См. пример работы регулярного выражения.

Подробности

  • ^ - начало строки
  • [А-ЯЁA-Z] - буква в верхнем регистре
  • .*? - ноль и более символов, отличных от символа перевода строки, как можно меньше
  • \s - пробел
  • (?=[А-ЯЁA-Z]) - сразу после текущей позиции должна быть буква в верхнем регистре.
→ Ссылка