PHP / PostGres регулярное выражение для сопоставления, только если слово в строке имеет 2 или более заглавных букв и содержит только буквы - PullRequest
0 голосов
/ 22 октября 2010

Это похоже на простое выражение, но все мои попытки провалились в том или ином месте.Я вытаскиваю данные из базы данных PostgreSQL.Я бы предпочел фильтровать в PostgreSQL, но если мне нужно сделать это в PHP, это тоже хорошо.Столбец будет содержать строку, и мне нужно искать совпадения, где любое слово (определенное пробелами) имеет две или более заглавных букв.Если мне нужно просто разобрать каждую строку и разобрать «слова» по отдельности, я тоже могу это сделать, но кажется, что регулярное выражение будет гораздо лучшим способом.

Вот несколько примеров:

"Быстрый Браун" // Нет соответствия

"Коричневый Квик" // МАТЧ (примечание: Квик имеет2 заглавные буквы)

"БЫСТРЫЙ БРАУН" // Соответствие

"БЫСТРЫЙ коричневый" // Нет соответствия (БЫСТРЫЙ - все заглавные буквы, но он также имеет не альфа-символ)

«БЫСТРЫЙ БРАУН1» // Соответствует, потому что БЫСТРЫЙ - это удар, хотя БРАУН1 - нет.

«БЫСТРЫЙ БЫСТРЫЙ» // Нет соответствия

«БЫСТРЫЙ БРАУН"// Нет соответствия (потому что - не альфа, а слова определяются только пробелом)

" быстрый коричневый цвет "// Нет соответствия

1 Ответ

1 голос
/ 22 октября 2010
(^| )[A-Za-z]*[A-Z][A-Za-z]*[A-Z][A-Za-z]*( |$)

Проверено через http://regexr.com? 2sdi4

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