Что такое RegExp?
История
Регулярные выражения (англ. Regular Expressions, сокр. RegExp) — система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи образцов для поиска. Регулярные выражения произвели прорыв в электронной обработке текста в конце XX века, и являются развитием символов-джокеров.
Синтаксис
Регулярное выражение – это текстовый шаблон, состоящий из обычных символов и специальных символов, известных как метасимволы. Этот шаблон описывает одну или более строк, которые должны обеспечить совпадения во время выполнения поиска в тексте. Регулярное выражение выполняет роль образца для сопоставления некоего символьного шаблона.
Большинство символов в регулярном выражении представляют сами себя.
Напимер: a, b, z, 1, 2, 9.
Специальных символов [ ] \ ^ $ . | ? * + ( ) { }
Спец. символы могут быть экранированы символом \ (обратная косая черта) для представления их в качестве символов текста.
Например: \[, \^, \)
Можно экранировать целую последовательность символов, заключив её между \Q и \E.
Например: \Q+-*/\E это аналогично записи \+\-\*\/
Ниже приведена таблица спецсимволов с описанием, далее они все будут подробно разобраны.
| $ | Соответствует позиции в конце входной строки. Для того чтобы задать соответствие самому символу $, нужно использовать \$. |
| ( ) | Помечает начало и конец подвыражения. Такие подвыражения могут быть сохранены для дальнейшего их использования. Для соответствия непосредственно самим этим символам, используйте \( и \). |
| * | Соответствует повторению предшествующего подвыражения 0 или более раз. Чтобы задать соответствие самому символу *, используйте \*. |
| + | Соответствует повторению предшествующего подвыражения 1 или более раз. Чтобы соответствовать самому символу +, используйте \+. |
| . | Соответствует любому одиночному символу, за исключением символа новой строки \n. Для соответствия . используйте \. |
| [ ] | Помечает начало и окончание символьного диапазона, размещенного в квадратных скобках. Для соответствия [ используйте \[. |
| ? | Соответствует повторению предшествующего подвыражения 0 или 1 раз или является индикатором "нежадности" выражения. Для соответствия символу ? используйте \?. |
| \ | Помечает следующий за ним символ или как специальный, как букву(литерал), как обратную ссылку или как восьмеричную escape-последовательность. Например, 'n' соответствует символу 'n', а '\n' соответствует символу новой строки. Последовательность '\\' соответствует "\", '\(' соответствует "(". |
| ^ | Соответствует позиции в начале входной строки, за исключением случаев использования данного символа в выражениях, помещенных в квадратные скобки, где он тогда отрицает стоящий за ним набор символов. Для указания соответствия самому символу ^ используйте \^. |
| { } | Помечает начало и окончания выражения-квантификатора. Для соответствия самому символу { используйте \{. |
| | | Указывает на выбор между двумя элементами. Чтобы соответствовать самому символу | используйте \|. |
Любой символ
Метасимвол . (точка) означает один любой символ и соответствует любому одиночному символу, кроме "\n".
Например: шаблон t.st соответствует словам test, tast, ttst, t1st, t3st, t-st и так далее с любым сымволом.
Наборы символов
Набор символов в квадратных скобках [ ] именуется символьным классом и позволяют указать, что на данном месте в строке может стоять один из перечисленных символов.
Например: [abc] задаёт возможность появления в тексте одного из трёх указанных символов, а [123] задаёт соответствие одной из цифр.
Возможно указание диапазонов символов.
Например: [A-Za-z] соответствует буквам латинского алфавита.
Если требуется указать символы, которые не входят в указанный набор, то используют символ ^ внутри квадратных скобок.
Например: [^0-9] означает любой символ, кроме цифр.
Положение внутри строки
Ниже описаны символы, позволяющие определить положение регулярного выражения относительно элементов текста:
- начала и конца строки;
- начала и концаслова.
| Спецсимвол | Описание | Пример | Результат |
| ^ | Начало строки | ^a | aaa aaa |
| $ | Конец строки | a$ | aaa aaa |
| \b | Границы слова | a\b | aaa aaa |
| \ba | aaa aaa | ||
| \B | Исключение границы слова | \Ba\B | aaa aaa |