2015-07-31 2 views
-3

Я не знаю ничего о регулярных выражениях, и именно поэтому я размещаю этот вопрос здесь. Может ли кто-нибудь помочь мне изменить соответствие Regex ниже?Regex/Php - нужно найти слова, которые начинаются с более чем двух заглавных букв.

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

$text = 'text TExt text TEXt teXT texT'; 
$total_words = preg_match_all('#(?<=)([^ ]*[A-Z][^ ]*[A-Z][^ ]*(?=)|[^ ]*[A-Za-z][^ ]*[0-9][^ ]*|[^ ]*[0-9][^ ]*[A-Za-z][^ ]*)(?=)#', $text, $matches); 
echo $total_words; 

ответ

0

Просто упростить регулярное выражение, как,

preg_match_all('#(?<!\S)[A-Z]{3}\w*(?!\S)#', $text, $matches); 

Затем подсчет элементов в возвращаемом массиве.

3

почему бы не использовать это:

[A-Z]{3}\w*

Пояснение:

[A-Z] Он будет видеть на заглавной буквы в начале строки

{3} матч ровно в 3 раза

\w* будет соответствовать любому символу слова ноль или моменту re times

демо здесь: http://www.phpliveregex.com/p/c6j

+0

Короткое и сладкое решение! –

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