Регулярний вираз
Матеріал з Вікіпедії — вільної енциклопедії.
Регулярний вислів (в програмуванні) — це рядок що описує або збігається з множиною рядків, відповідно до набору спеціальних синтаксичних правил. Регулярні вислови використовуються в багатьох текстових редакторах та допоміжних інструментах для пошуку та зміни тексту на основі заданих шаблонів. Багато мов програмування підтримують регулярні вислови для роботи з рядками. Наприклад, Perl та Tcl мають потужний механізм для роботи з регулярними висловами, вбудований безпосередньо в їх синтаксис. Завдяки набору утиліт (включаючи редактор sed та фільтр grep), що входили до складу дистрибутивів Юнікс регулярні вислови стали відомими та поширеними.
Зміст |
[ред.] Базові принципи
Регулярні вислови базуються на теорії автоматів та теорії формальних мов. Ці розділи теоретичної кібернетики займаються дослідженням моделей обчислення (автомати) та способами описання та класифікації формальних мов.
Регулярний вислів (часто називається шаблон) є висловом, що описує множину рядків. Ці вислови використовуються для того, аби дати точне описання множини не перелічуючи всі її елементи. Наприклад, множина, що складається із слів «грати» та «ґрати» може бути описана регулярним висловом «[гґ]рати». В більшості формалізмів, якщо існує регулярний вислів, що описує задану множину, тоді існує нескінченна кількість висловів, які описують цю множину.
[ред.] Синтаксис регулярних висловів
Синтаксис регулярних висловів залежить від інтерпретатора, що використовується для їх обробки. Однак, із незначними відхиленнями, майже всі поширені механізми інтерпретатори регулярних висловів мають спільні правила.
Найпростіший регулярний вислів, з якого формуються складні, є звичайний символ. Більшість символів, включаючи усі літери та цифри, є регулярними висловами, що співпадають із відповідними символами в рядках.
Кожний метасимвол з особливим значенням мусить екрануватись попереду символом зворотної похилої риски.
Після регулярного вислову можна вказати один чи декілька операторів повтору (метасимволів):
- .
- Співпадає з будь-яким символом.
- ?
- Попередній вислів є необов'язковим і може збігатися максимум один раз.
- *
- Попередній вислів повинен співпадати нуль чи більше разів.
- +
- Попередній вислів повинен співпадати один чи більше разів.
- {N}
- Попередній вислів повинен співпадати рівно N разів.
- {N,}
- Попередній вислів повинен співпадати N чи більше разів.
- {N,M}
- Попередній вислів повинен співпадати не менш ніж N, однак не більше за М разів.
- —
- Якщо цей символ знаходиться не на початку й не в кінці списку чи інтервалу у списку, задає інтервал.
- ^
- Співпадає з початком рядка, при цьому не потребує символу. Якщо стоїть на початку списку, інвертує його (збігається з символом, якого немає у списку).
- $
- Співпадає з кінцем рядка.
- \b
- Співпадає з межею слова.
- \B
- Співпадає з порожнім рядком, якщо у цьому місці не закінчується або не починається слово.
- \<
- Співпадає з пустим рядком у початку слова.
- \>
- Співпадає з пустим рядком у кінці слова.
Два регулярних вислови можна об'єднати. У цьому разі отриманий складний вислів буде співпадати з рядком, що є об'єднанням двох рядків, які співпадають з наведеними регулярними вислівами.
Два регулярних вислови можна з'єднати інфіксним оператором «|»; у цьому разі складний вислів буде співпадати з рядками, що співпадають або з першим, або з другим простим регулярним висловом.
Оператори повтору мають більший пріоритет, ніж оператор об'єднання, а останній у свою чергу має більший пріоритет, ніж оператор альтернативи. Ці правила пріоритету можна змінити за допомогою круглих дужок.
[ред.] Стандартні та поширені регулярні вислови
В залежності від інтерпретатора регулярних висловів, метасимволи «?», «+», «{», «|», «(», та «)» можуть втрачати своє спеціальне значення, замість цього слід вживати «\?», «\+», «\{», «\|», «\(», та «\)».
[ред.] Приклади
Наведемо декілька словесних прикладів регулярних висловів: «три цифри» (з таким шаблоном співпадають рядки «121», «424», але не «23абв»), «дві цифри, після яких стоїть крапка, за якою йдуть декілька цифр, проте не менше однієї» (з цим шаблоном співпадають «11.2», «11.4а», але не «11. »). Регулярні вислови подібні арифметичним в тому, що формуються з менших висловів за допомогою операторів.
[ред.] Заголовки розділів Вікіпедії
Відповідно до правил форматування Вікіпедії, назви розділів починаються з декількох знаків «дорівнює» на початку рядка. Наступний регулярний вислів для GNU Emacs співпадає з такими заголовками:
\(^==+\).*\1
[ред.] Джерела інформації
- Regular expression (англ.), Wikipedia, 24 січня 2007.
- LDP:Bash beginners guide/regular expressions, docs.linux.org.ua, 24 січня 2007.
[ред.] Дивіться також
- sed — джерела регулярних виразів
- Perl — поширена мова програмування, регулярні вислови включено до синтаксису.
- Регулярні події та вирази — теоретичні відомості про вислови регулярними мовами.
[ред.] Ресурси інтернет
- Regular-Expressions.info(англ.) Інструменти для роботи з регулярними висловами, приклади та довідники.
- DMOZ: Перелік посилань на ресурси про регулярні вислови(англ.)

