Синтаксис регулярных выражений Java

Синтаксис регулярных выражений JavaПрежде чем продемонстрировать применение классов Pattern и Matcher на практике, следует пояснить, каким образом составляется регулярное выраже­ние.

Хотя ни одно из правил составления регулярных выражений нельзя назвать сложным, их очень много, и поэтому описать полностью все эти правила в одной статье просто невозможно.

Тем не менее ниже описываются некоторые из наибо­лее распространенных синтаксических конструкций регулярных выражений.

В общем, регулярное выражение состоит из обычных символов, классов симво­лов (наборов символов), метасимволов и кванторов. Обычный символ сопостав­ляется в исходном виде. Так, если шаблон содержит пару символов «xy«, то с этим шаблоном может совпасть только входная последовательность «xy«.

Символы вроде новой строки и табуляции указываются с помощью стандартных управля­ющих последовательностей, начинающихся со знака обратной косой черты ( \ ).

Например, символ новой строки обозначается управляющей последовательно­стью \n. В терминологии регулярных выражений обычный символ иначе называ­ется литералом.

Класс символов является набором символов. Класс символов можно задать, заключив символы этого класса в квадратные скобки. Например, класс символов [wxyz] совпадает с символами w, х, у или z. Чтобы задать обратный набор симво­лов, перед ними следует указать знак ^.

Например, класс символов [^wxyz] совпа­дает с любым символом, кроме w, х, у и z. Диапазон символов указывается с помо­щью дефиса. Так, класс символов [1 — 9] совпадает с цифрами от 1 до 9.

Метасимволом служит знак точки ( . ) , совпадающий с любым символом. Таким образом, шаблон «.», состоящий только из знака точки, будет совпадать с любой из следующих (и других) входных последовательностей: «А» , «а» , «х» и т.д.

Квантор определяет, сколько раз совпадает выражение. Ниже перечисле­ны кванторы, применяемые в регулярных выражениях.

  • + Обозначает совпадение один раз или больше
  • * Обозначает совпадение нуль или раз больше
  • ? Обозначает совпадение нуль или один раз

Например, шаблон «х+» будет совпадать с последовательностями симво­лов «х», «хх», «ххх» и т.п. И наконец, следует иметь в виду, что если регуляр­ное выражение составлено неверно, то будет сгенерировано исключение типа PatterSyntaxException.