Регулярные выражения -Приоритет операторов

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

Операции с одинаковым приоритетом выполняются слева направо, а операции с разным приоритетом выполняются от высокого к низкому. В следующей таблице показан порядок приоритета различных операторов регулярных выражений от высшего к низшему:

Operator Описание
\ Экранирующий символ
(), (?:), (?=), [] Круглые и квадратные скобки
*, +, ?, {n}, {n,}, {n,m} Квантификатор
^, $, \ любой метасимвол, любой символ Якоря и последовательности (т. е. позиция и порядок)
| Альтернатива, операция "или"
Символы имеют более высокий приоритет, чем оператор альтернативы, поэтому "m|food" соответствует "m" или "food". Чтобы сопоставить "mood" или "food", используйте круглые скобки для создания подвыражения, что даёт "(m|f)ood".

Ниже перечислены некоторые распространённые операторы регулярных выражений в порядке убывания приоритета:

  • Символ экранирования: \Это символ экранирования, используемый для экранирования других специальных символов. Он имеет наивысший приоритет.

    Пример:\d、\.и т. д., где\dсоответствует цифре,\.соответствует точке.

  • Круглые скобки:Круглые скобки()используются для создания подвыражений и имеют более высокий приоритет, чем другие операторы.

    Пример:(abc)+Соответствует "abc" один или более раз.

  • Квантификаторы:Квантификаторы указывают, сколько раз может быть повторён предшествующий элемент.

    Пример:a*Совпадает с нулём или более "a".

  • Классы символов:Классы символов используют квадратные скобки[]чтобы сопоставить любой символ внутри скобок.

    Пример:[aeiou]Совпадает с любой одной из гласных букв.

  • Утверждения:Утверждения — это элементы, используемые для проверки условий в определённых позициях строки.

    Пример:^обозначает начало строки,$обозначает конец строки.

  • Конкатенация:Конкатенация представляет собой простое соединение символов, когда нет других операторов.

    Пример:abcСовпадает с "abc".

  • Вертикальная черта:Символ вертикальной черты|представляет отношение "или" и используется для выбора одного из нескольких шаблонов.

    Пример:cat|dogСовпадает с "cat" или "dog".

Далее рассмотрим объяснение приоритета следующих регулярных выражений:

\d{2,3}|[a-z]+(abc)*
  • \d{2,3}Совпадает с двумя или тремя цифрами.
  • |обозначает "или".
  • [a-z]+Совпадает с одной или несколькими строчными буквами.
  • (abc)*Совпадает с нулём или более экземплярами "abc".
Другие расширения