Метасимволы регулярных выражений (с примерами)

Регулярное выражение определяет шаблон поиска для строк. Этот шаблон может совпадать один или несколько раз или не совпадать вообще для заданной строки. Сокращение для регулярного выражения — regex. Регулярные выражения можно использовать для поиска, редактирования и обработки текста.

Метасимволы регулярных выражений — это специальные символы, которые несут определенное значение и определяют шаблон в регулярном выражении. Эти символы позволяют нам создавать гибкие и мощные шаблоны поиска для обработки текста.

1. Список метасимволов регулярных выражений

Вот список распространенных метасимволов регулярных выражений и их значений:

Мета-персонаж Описание
. Соответствует любому одиночному символу, кроме символа новой строки.
^ Соответствует началу строки.
$ Соответствует концу строки.
* Соответствует нулю или более повторений предыдущего элемента.
+ Соответствует одному или нескольким повторениям предыдущего элемента.
? Соответствует нулю или одному повторению предыдущего элемента(делает его необязательным).
{н} Соответствует ровно n повторениям предыдущего элемента.
{н,} Соответствует n или более повторениям предыдущего элемента.
{н,м} Соответствует от n до m повторений предыдущего элемента.
\ Экранирует метасимвол, позволяя рассматривать его как буквальный символ.
[] Соответствует любому отдельному символу в скобках.
[^] Соответствует любому одиночному символу, не заключенному в скобки.
() Группирует несколько токенов вместе и сохраняет совпадающий текст.
Соответствует любой цифре, эквивалентной [0-9].
Соответствует любому символу, не являющемуся цифрой, эквивалентно [^0-9].
\w Соответствует любому символу слова(буквы, цифры + подчеркивание), эквивалентно [a-zA-Z0-9_].
\W Соответствует любому символу, не являющемуся словом, эквивалентно [^a-zA-Z0-9_].
Соответствует любому символу пробела(пробелу, табуляции, переносу строки).
Соответствует любому символу, отличному от пробела.

2. Пример метасимволов регулярных выражений

Давайте рассмотрим несколько примеров использования метасимволов в регулярных выражениях и их сопоставления.

2.1. Метасимвол точки(.)

Метасимвол точки соответствует любому одиночному символу, кроме символа новой строки(\n). Он полезен для сопоставления шаблона, где символ может быть любым.

Pattern pattern = Pattern.compile(".at");Matcher matcher = pattern.matcher("cat bat rat sat mat");while(matcher.find()) {System.out.println(matcher.group()); // cat, bat, rat, sat, mat}

2.2 Метасимволы «крышка»(^) и «доллар»($)

Знак каретки(^) соответствует началу строки, а знак доллара($) соответствует концу строки. Они используются для того, чтобы гарантировать, что шаблон соответствует началу или концу строки соответственно.

// Matches "Hello" only if it is at the start of the stringPattern pattern = Pattern.compile("^Hello");Matcher matcher = pattern.matcher("Hello world");System.out.println(matcher.find()); // true
// Matches "world" only if it is at the end of the stringpattern = Pattern.compile("world$");matcher = pattern.matcher("Hello world");System.out.println(matcher.find()); // true

2.3. Метасимволы звездочки(*), плюса(+) и вопросительного знака(?)

  • *: Соответствует нулю или более повторений предыдущего элемента.
  • +: Соответствует одному или нескольким повторениям предыдущего элемента.
  • ?: Соответствует нулю или одному повторению предыдущего элемента(делает его необязательным).
// Matches "a", "aa", "aaa", etc.Pattern pattern = Pattern.compile("a*");Matcher matcher = pattern.matcher("aaab");while(matcher.find()) {System.out.println(matcher.group()); // aaa}// Matches "a", "aa", "aaa", etc., but at least one "a"pattern = Pattern.compile("a+");matcher = pattern.matcher("aaab");while(matcher.find()) {System.out.println(matcher.group()); // aaa}// Matches "a" or "ab"pattern = Pattern.compile("ab?");matcher = pattern.matcher("ab");while(matcher.find()) {System.out.println(matcher.group()); // ab}

2.4. Фигурные скобки({}) Метасимволы

Фигурные скобки используются для указания точного количества повторений предыдущего элемента.

  • {n}: Ровно n повторений.
  • {n,}: Не менее n повторений.
  • {n,m}: От n до m повторений.
// Matches exactly 3 "a"sPattern pattern = Pattern.compile("a{3}");Matcher matcher = pattern.matcher("aaab");while(matcher.find()) {System.out.println(matcher.group()); // aaa}// Matches 2 or more "a"spattern = Pattern.compile("a{2,}");matcher = pattern.matcher("aaaa");while(matcher.find()) {System.out.println(matcher.group()); // aaaa}// Matches between 2 and 3 "a"spattern = Pattern.compile("a{2,3}");matcher = pattern.matcher("aaa");while(matcher.find()) {System.out.println(matcher.group()); // aaa}

2.5. Квадратные скобки([]) Метасимволы

Квадратные скобки используются для определения класса символов, соответствующего любому отдельному символу в скобках.

  • [abc]: Соответствует любому отдельному символу «a», «b» или «c».
  • [^abc]: Соответствует любому отдельному символу, кроме «a», «b» или «c».
// Matches "a", "b", or "c"Pattern pattern = Pattern.compile("[abc]");Matcher matcher = pattern.matcher("a1b2c3");while(matcher.find()) {System.out.println(matcher.group()); // Matches 'a', 'b', 'c'}// Matches any character except "a", "b", or "c"pattern = Pattern.compile("[^abc]");matcher = pattern.matcher("a1b2c3");while(matcher.find()) {System.out.println(matcher.group()); // Matches '1', '2', '3'}

3. Экранирование метасимволов с помощью обратной косой черты(\)

Обратная косая черта используется для экранирования метасимвола, делая его буквальным символом в шаблоне. Например, \\. соответствует буквенному символу точки('.').

// Matches the literal dot characterPattern pattern = Pattern.compile("\\.");Matcher matcher = pattern.matcher("1.2.3");while(matcher.find()) {System.out.println(matcher.group());}

В этом примере регулярного выражения Java мы научились использовать метасимволы в регулярных выражениях для оценки текстовых строк.

Прокрутить вверх