Регулярные выражения -Приоритет операторов
Регулярные выражения вычисляются слева направо и подчиняются порядку приоритета, который очень похож на приоритет арифметических выражений.
Операции с одинаковым приоритетом выполняются слева направо, а операции с разным приоритетом выполняются от высокого к низкому. В следующей таблице показан порядок приоритета различных операторов регулярных выражений от высшего к низшему:
| 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".