Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Регулярные выражения в русских текстах

Автор: Michael Betsch

Альтернативы

Альтернативные последовательности разделяются символом "|".

Примеры

дом|изба => "дом" или "изба"
дом|улица|двор => "дом" или "улица" или "двор"

Модификаторы

Модификаторы (квантификаторы) пишутся после символа, к которому они относятся. Если модификатор следует после круглых скобок (группировки), то он применяется к выражению в скобках.

+ => символ или выражение повторяется 1 или большее число раз
* => повторяется 0 или большее число раз
? => 1 или 0 раз
{n} => точно n раз
{n,} => по меньшей мере n раз
{n,m} => по меньшей мере n, но и не больше m раз

Примеры

дома? => "дом" или "дома"
дома+ => "дома", "домаа" и т.д.
дома* => "дом", "дома", "домаа" и т.д.

Произвольные символы

Точка "." обозначает один произвольный символ. Множество возможных символов (класс) заключается в квадратные скобки "[]" - это значит, что в данном месте может стоять один из указанных в скобках символ. Если первый символ в скобках это "^" - значит не один из указанных символов не может стоять в данном месте выражения. Внутри класса можно употреблять символ "-" обозначающий диапазон символов. Например "[a-z]" обозначает один из строчных букв латинского алфавита.

Примеры

[abc] => "a", "b" или "c"
[^abc] => любая строчная буква кроме "a", "b" или "c".
С применением модификаторов:
[a-z]? => любая строчная буква, или отсутствие символа
.* => любое число любых символов

Группировка: круглые скобки

Круглые скобки применяются для определения группы символов или части выражения, к которой относится символ альтернативы ("|") или модификатор.

Примеры

дом(ами|ом) => "домами" или "домом"
домами|ом => "домами" или "ом".
домами? => "домами" или "домам".
дом(ами)? => "дом" или "домами".

Внутренние преобразования

В регулярных выражениях допускаются русские буквы по выбранной кодировке (КОИ8 или Windows 1251). Перед самим поиском поисковое выражение трансформируется поисковой системой в латинские буквы по нашей системе транслитерации). Кроме того, точка . заменяется выражением "[a-zA-Z]". В редких случаях это преобразование может привести к тому, что некоторые символы внутри классов ([]) или перед модификаторами получают другое значение. Для наибольшего контроля над этими трансформациями преобразованное поисковое выражение дается в начале страницы результатов поиска.

Возможности поиска

В качестве поисковых выражений допускаются словоформы и регулярные выражения. Необходимо искать целые словоформы. Поисковое выражение должно содержать в себе полную словоформу. Для обозначения произвольной части слова возможно использование символов ".*" (точка и звездочка).
Согласно с выбранной опцией, заглавные и строчные буквы различаются или не различаются. Словоформы разделяются пробелом. Это относится также к знакам препинания, так как они рассматриваются как отдельные слова.
Точку в аббревиатурах (и т. д., М. С.) или в конце предложения при поиске надо задать знаком "# ", а вопросительный знак ("?") как "\?", потому что точка и вопросительный знак в регулярных выражениях являются метасимволами.
Если выбрана кодировка "КОИ8" или "Windows 1251", то ввод осуществляется либо русскими буквами по выбраной кодировке, либо латинскими буквами по нашей системе транслитерации. Допускается даже смесь русских и латинских букв.
Помимо целых словоформ можно использовать регулярные выражения языка PERL.
(См. краткое введение в регулярные выражения)
( Детальное описание регулярных выражений в языке PERL)

Примеры

нет дома будет найдено: нет дома
со знаками усечения слов:
дом.* будет найдено: (все словоформы, начинающие на "дом")
поиск знаков препинания (точка, вопросительный знак)
нет \? будет найдено: нет ?
нет # будет найдено: нет .
и t# д# будет найдено: и t. д.
с помощью регулярных выражений:
дом(а|у|е|о[вм]|ах|ами?)? будет найдено: дом, дома, дому, доме, домом, домов, домам, домами, домах.
(перед|за) домом будет найдено: перед домом, за домом
ее( нет)? дома будет найдено: ее дома, ее нет дома

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS