Читаем Программирование на языке Ruby полностью

МодификаторНазначение
IИгнорировать регистр
OВыполнять подстановку выражения только один раз
MМногострочный режим (точка сопоставляется с символом новой строки)
XОбобщенное регулярное выражение (допускаются пробелы и комментарии)

Дополнительные примеры будут рассмотрены в главе 4. Чтобы завершить введение в регулярные выражение, в таблице 3.3 мы приводим наиболее употребительные символы и обозначения.


Таблица 3.3. Общеупотребительные обозначения в регулярных выражениях

ОбозначениеПояснение
^Начало строки текста (line) или строки символов (string)
$
Конец строки текста или строки символов
.Любой символ, кроме символа новой строки (если не установлен многострочный режим)
\wСимвол - часть слова (цифра, буква или знак подчеркивания)
\WСимвол, не являющийся частью слова
\sПропуск (пробел, знак табуляции, символ новой строки и т.д.)
\SСимвол, не являющийся пропуском
\dЦифра (то же, что [0-9])
\DНе цифра
\AНачало строки символов (string)
\Z
Конец строки символов или позиция перед конечным символом новой строки
\zКонец строки символов (string)
\bГраница слова (только вне квадратных скобок [ ])
\BНе граница слова
\bЗабой (только внутри квадратных скобок [ ])
[]Произвольный набор символов
*0 или более повторений предыдущего подвыражения
*?0 или более повторений предыдущего подвыражения (нежадный алгоритм)
+1 или более повторений предыдущего подвыражения
+?
1 или более повторений предыдущего подвыражения (нежадный алгоритм)
{m, n}От m до n вхождений предыдущего подвыражения
{m, n}?От m до n вхождений предыдущего подвыражения (нежадный алгоритм)
?0 или 1 повторений предыдущего подвыражения
|Альтернативы
(?= )Позитивное заглядывание вперед
(?! )Негативное заглядывание вперед
Группировка подвыражений
(?> )Вложенное подвыражение
(?: )
Несохраняющая группировка подвыражений
(?imx-imx)Включить/выключить режимы, начиная с этого места
(?imx-imx: expr)Включить/выключить режимы для этого выражения
(?# )Комментарий

Умение работать с регулярными выражениями — большой плюс для современного программиста. Полное рассмотрение этой темы выходит далеко за рамки настоящей книги, но, если вам интересно, можете обратиться к книге Jeffrey Friedl, Mastering Regular Expressions[8].

Дополнительный материал вы также найдете в разделе 3.13.

3.2. Компиляция регулярных выражений

Для компиляции регулярных выражений предназначен метод Regexp.compile (синоним Regexp.new). Первый параметр обязателен, он может быть строкой или регулярным выражением. (Отметим, что если этот параметр является регулярным выражением с дополнительными флагами, то флаги не будут перенесены в новое откомпилированное выражение.)

pat1 = Regexp.compile("^foo.*") # /^foo.*/

pat2 = Regexp.compile(/bar$/i)  # /bar/ (i не переносится)

Если второй параметр задан, обычно это поразрядное объединение (ИЛИ) каких-либо из следующих констант: Regexp::EXTENDED, Regexp::IGNORECASE, Regexp::MULTILINE. При этом любое отличное от nil значение приведет к тому, что регулярное выражение не будет различать регистры; мы рекомендуем опускать второй параметр.

options = Regexp::MULTILINE || Regexp::IGNORECASE

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже