Соответствие 3+ Заглавному Слову в одном выражении pcre

Я ищу единственное регулярное выражение, совместимое с pcre (версия 3.85), которое соответствует строке, состоящей из трех или более слов регистра, но не соответствует ни одной строке, содержащей слова, начинающиеся со строчной буквы. Например:

"Gaius Julius Caesar" should match
"Gaius Caesar" should not match
"Gaius Julius Caesar Rome" should match
"Gaius julius Caesar" should not match

Пытался

(\b[A-Z]\w+\b){3,}

без успеха.

Любой намек?

2 ответа

Решение

Попробуйте один из них:

(\b[A-Z]\w+\b\s??){3,}

Вот демо

(\b[A-Z]\w+\b)(\s+\b[A-Z]\w+\b){2,}

Вот демо

Вы можете попробовать следующую команду pcregrep,

$ pcregrep -o -M '^[A-Z]\w+(?: [A-Z]\w+){2,}$' file
Gaius Julius Caesar
Gaius Julius Caesar Rome

ИЛИ ЖЕ

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

$ pcregrep -o -M '^[A-Z][a-z]+(?: [A-Z][a-z]+){2,}$' file
Gaius Julius Caesar
Gaius Julius Caesar Rome
Другие вопросы по тегам