Поиск слов

Задача
Необходимо выделить все слова в строке.

Решение
Ключ к решению этой задачи в том, чтобы аккуратно определить, что именно мы понимаем под словом. Сформулировав это определение, используйте специальные символьные типы для создания регулярного выражения:

/\S+/ // все, что не является пробельным символом /[A-Z'-]+/i // все буквы в нижнем и верхнем регистре, апострофы и дефисы.

Обсуждение
Простой вопрос «что же такое слово?» неожиданно оказывается довольно сложным. Хотя регулярные выражения, совместимые с Perl, имеют встроенный символьный тип для слова, определяемый символами \w, важно точно понимать, как определяет слово PHP. В противном
случае полученный результат может оказаться для вас неожиданным.

Обычно, поскольку это непосредственно следует из определения слова в Perl, символ \w подразумевает все буквы, цифры и символ подчеркивания; это значит, что a_z словом является, а адрес электронной почты, php@example.com, – нет.

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

Для борьбы с этим можно явным образом перечислить символы, принадлежащие словам, внутри символьного класса. Нестандартные символы можно добавить при помощи кодировки \ddd, где ddd представляет восьмеричный код символа.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Выбор между поглощающим и непоглощающим сравнением
Нахождение n-го совпадения
Переход от ereg к preg
Поиск в файле всех строк, соответствующих шаблону
Проверка правильности адресов электронной почты

Вернуться в раздел: PHP / 13. Регулярные выражения