2014-10-11 1 views
0

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

"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,} 

без успеха.

Подсказка?

+0

NO. «julius» - это слово, начинающееся с буквы нижнего регистра –

+0

Предпочтительно, я хотел бы совместить строчные буквы, цифры, подчеркивание и запятую ',' –

ответ

0

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

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

Вот demo

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

Вот demo

+0

Я разработал регулярное выражение для работы со строками на одной строке (без многострочной поддержки) , – friedi

+0

@fiedi Thnx много. «Тестер демо» отлично! –

1

Вы можете попробовать команду ниже pcregrep,

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

OR

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

$ pcregrep -o -M '^[A-Z][a-z]+(?: [A-Z][a-z]+){2,}$' file 
Gaius Julius Caesar 
Gaius Julius Caesar Rome 
Смежные вопросы