Читаем Программирование на языке 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.
Для компиляции регулярных выражений предназначен метод 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




