Книга: Программирование на языке Ruby
3.1. Синтаксис регулярных выражений
3.1. Синтаксис регулярных выражений
Обычно регулярное выражение ограничено с двух сторон символами косой черты. Применяется также форма %r
. В таблице 3.1 приведены примеры простых регулярных выражений:
Таблица 3.1. Простые регулярные выражения
Регулярное выражение | Пояснение |
---|---|
/Ruby/ |
Соответствует одному слову Ruby |
/[Rr]uby/ |
Соответствует Ruby или ruby |
/^abc/ |
Соответствует abc в начале строки |
%r(xyz$) |
Соответствует xyz в конце строки |
%r|[0-9]*| |
Соответствует любой последовательности из нуля или более цифр |
Сразу после регулярного выражения можно поместить однобуквенный модификатор. В таблице 3.2 приведены наиболее часто употребляемые модификаторы.
Таблица 3.2. Модификаторы регулярных выражений
Модификатор | Назначение |
---|---|
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.1. Синтаксис регулярных выражений
- 3.2. Компиляция регулярных выражений
- 3.3. Экранирование специальных символов
- 3.4. Якоря
- 3.5. Кванторы
- 3.6. Позитивное и негативное заглядывание вперед
- 3.7. Обратные ссылки
- 3.8. Классы символов
- 3.9. Обобщенные регулярные выражения
- 3.10. Сопоставление точки символу конца строки
- 3.11. Внутренние модификаторы
- 3.12. Внутренние подвыражения
- 3.13. Ruby и Oniguruma
- 3.14. Примеры регулярных выражений
- 3.15. Заключение
- Группировка подвыражений
- 1.2. Базовый синтаксис и семантика Ruby
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- 1.5.1. Синтаксис
- 3. Null-значения и общее правило вычисления выражений
- 3.13.7. Рекурсия в регулярных выражениях
- 1.4.4. Использование нетрадиционного синтаксиса на диаграммах функциональной модели
- Как использовать технику разговорных выражений
- Разбор XPath-выражений
- Виды выражений
- 7.2. Синтаксис CSS
- Синтаксис множественного фона