Статьи
Синтаксис регулярних виразів Java
Перш ніж продемонструвати застосування класів Pattern і Matcher на практиці, слід пояснити, яким чином складається регулярний вираз.
Хоча жодне з правил складання регулярних виразів можна назвати складним, їх дуже багато, і тому описати повністю всі ці правила в одній статті просто неможливо.
Проте нижче описуються деякі з найбільш поширених синтаксичних конструкцій регулярних виразів.
Загалом, регулярний вираз складається зі звичайних символів, класів символів (наборів символів), метасимволов і кванторів. Звичайний символ зіставляється в початковому вигляді. Так, якщо шаблон містить пару символів "xy", то з цим шаблоном може збігтися тільки вхідна послідовність "xy".
Символи на кшталт нового рядка і табуляції вказуються за допомогою стандартних керуючих послідовностей, що починаються зі знака зворотної косої риски (\).
Наприклад, символ нового рядка позначається керуючої послідовністю \ n. У термінології регулярних виразів звичайний символ інакше називається літералом.
Клас символів є набором символів. Клас символів можна задати, уклавши символи цього класу в квадратні дужки. Наприклад, клас символів [wxyz] збігається з символами w, х, у або z. Щоб задати зворотний набір символів, перед ними слід вказати знак ^.
Наприклад, клас символів [^ wxyz] збігається з будь-яким символом, крім w, х, у і z. Набір символів вказується за допомогою дефіса. Так, клас символів [1 - 9] збігається з цифрами від 1 до 9.
Метасимволом служить знак точки (.), Що співпадає з будь-яким символом. Таким чином, шаблон ".", Що складається тільки з знака точки, буде збігатися з будь-якої з наступних (і інших) вхідних послідовностей: "А", "а", "г" і т.д.
Квантор визначає, скільки разів збігається вираз. Нижче перераховані квантори, що застосовуються в регулярних виразах.
- + Позначає збіг один раз або більше
- * Означає збіг нуль або раз більше
- ? Позначає збіг нуль або один раз
Наприклад, шаблон "х +" буде збігатися з послідовностями символів "х", "хх", "ххх" і т.п. І нарешті, слід мати на увазі, що якщо регулярний вираз складено невірно, то буде згенеровано виняток типу PatterSyntaxException.