Регулярные выражения windows поиск

Обновлено: 04.07.2024

Регулярные выражения представляют собой похожий, но гораздо более сильный инструмент для поиска строк, проверки их на соответствие какому-либо шаблону и другой подобной работы. Англоязычное название этого инструмента — Regular Expressions или просто RegExp. Строго говоря, регулярные выражения — специальный язык для описания шаблонов строк.

Реализация этого инструмента различается в разных языках программирования, хоть и не сильно. В данной статье мы будем ориентироваться в первую очередь на реализацию Perl Compatible Regular Expressions.

Основы синтаксиса

25–27 ноября, Онлайн, Беcплатно

Однако уже здесь следует быть аккуратным — как и любой язык, регекспы имеют спецсимволы, которые нужно экранировать. Вот их список: . ^ $ * + ? < >[ ] \ | ( ) . Экранирование осуществляется обычным способом — добавлением \ перед спецсимволом.

Набор символов

Предопределённые классы символов

Если необходимо описать вообще любой символ, для этого используется точка — . . Если указанные классы написать с заглавной буквы ( \S , \D , \W ) то они поменяют свой смысл на противоположный — любой непробельный символ, любой символ, который не является цифрой, и любой символ кроме латиницы, цифр или подчёркивания соответственно.

Комикс про регулярные выражения с xkcd.ru

Диапазоны

Квантификаторы

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

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

Обратите внимание, что квантификатор применяется только к символу, который стоит перед ним.

Некоторые часто используемые конструкции получили в языке RegEx специальные обозначения:

Спецобозначения квантификаторов в регулярных выражениях.

Спецобозначения квантификаторов в регулярных выражениях.

Ленивая квантификация

Предположим, перед нами стоит задача — найти все HTML-теги в строке

Очевидное решение <.*> здесь не сработает — оно найдёт всю строку целиком, т.к. она начинается с тега абзаца и им же заканчивается. То есть содержимым тега будет считаться строка

Это происходит из-за того, что по умолчанию квантификатор работают по т.н. жадному алгоритму — старается вернуть как можно более длинную строку, соответствующую условию. Решить проблему можно двумя способами. Первый — использовать выражение <[^>]*> , которое запретит считать содержимым тега правую угловую скобку. Второй — объявить квантификатор не жадным, а ленивым. Делается это с помощью добавления справа к квантификатору символа ? . Т.е. для поиска всех тегов выражение обратится в <.*?> .

Ревнивая квантификация

Чуть больше о жадном, сверхжадном и ленивом режимах квантификации вы сможете узнать из статьи о регулярных выражениях в Java.

Скобочные группы

Запоминание результата поиска по группе

Оказывается, результат поиска по скобочной группе записывается в отдельную ячейку памяти, доступ к которой доступен для использования в последующих частях регэкспа. Возвращаясь к задаче с поиском HTML-тегов на странице, нам может понадобиться не только найти теги, но и узнать их название. В этом нам может помочь регулярное выражение <(.*?)> .

Если выражение берётся в скобки только для применения к ней квантификатора (не планируется запоминать результат поиска по этой группе), то сразу после первой скобки стоит добавить ?: , например (?:[abcd]+\w) .

С использованием этого механизма мы можем переписать наше выражение к виду [Хх]([аоие])х?(?:\1х?)* .

I love or hate regex

Перечисление

Полезные сервисы

Потренироваться и/или проверить регулярное выражение на каком-либо тексте без написания кода можно с помощью таких сервисов, как RegExr, Regexpal или Regex101. Последний, вдобавок, приводит краткие пояснения к тому, как регулярка работает.

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

RegExp Builder — визуальный конструктор функций JavaScript для работы с регулярными выражениями.

Больше инструментов можно найти в нашей подборке.

Задания для закрепления

Найдите время

Java[^script]

Найдет ли регулярка Java[^script] что-нибудь в строке Java? А в строке JavaScript?

Разобрать арифметическое выражение

Арифметическое выражение состоит из двух чисел и операции между ними, например:

Также могут присутствовать пробелы вокруг оператора и чисел.

Напишите регулярку, которая найдёт, как всё арифметическое действие, так и (через группы) два операнда.

Регулярное выражение для числа, возможно, дробного и отрицательного: -?\d+(\.\d+)? .

Оператор – это [+*/\-] . Заметим, что дефис мы экранируем. Нам нужно число, затем оператор, затем число, и необязательные пробелы между ними. Чтобы получить результат в требуемом формате, добавим ?: к группам, поиск по которым нам не интересен (отдельно дробные части), а операнды наоборот заключим в скобки. В итоге:

Кроссворды из регулярных выражений

Такие кроссворды вы можете найти у нас.

Регулярные выражения предоставляют мощный, гибкий и эффективный способ обработки текста. Комплексная нотация сопоставления шаблонов регулярных выражений позволяет быстро анализировать большие объемы текста в следующих целях:

  • поиск определенных шаблонов символов;
  • проверка текста на соответствие предопределенному шаблону (например, адресу электронной почты);
  • извлечение, изменение, замена или удаление текстовых подстрок;
  • добавление извлеченных строк в коллекцию для создания отчета.

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

Принцип работы регулярных выражений

Шаблон регулярного выражения для определения текста.

Текст, который будет проанализирован на соответствие шаблону регулярного выражения.

Методы класса Regex позволяют выполнять следующие операции:

Определить, входит ли шаблон регулярного выражения во входной текст, с помощью метода Regex.IsMatch. Пример использования метода IsMatch для проверки текста см. в разделе Руководство. Проверка строк на соответствие формату электронной почты.

Получить один или все экземпляры текста, соответствующего шаблону регулярного выражения с помощью метода Regex.Match или Regex.Matches. Первый метод возвращает объект System.Text.RegularExpressions.Match, который предоставляет сведения о соответствующем тексте. Второй метод возвращает объект MatchCollection, содержащий один объект System.Text.RegularExpressions.Match для каждого соответствия, обнаруженного в обработанном тексте.

Заменить текст, соответствующий шаблону регулярного выражения, с помощью метода Regex.Replace. Примеры использования метода Replace для изменения форматов даты и удаления недопустимых символов из строки см. в разделах Руководство. Исключение недопустимых символов из строки и Руководство. Изменение форматов даты.

Обзор объектной модели регулярных выражений см. в разделе Объектная модель регулярных выражений.

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

Примеры регулярных выражений

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

Пример 1: Замена подстрок

Предположим, что список рассылки содержит имена, в которые иногда входит обращение (Mr., Mrs., Miss или Ms.) в дополнение к имени и фамилии. Если вы не хотите включать обращения при создании этикеток для конвертов из списка, с помощью регулярного выражения их можно удалить, как показано в следующем примере.

Шаблон регулярного выражения (Mr\.? |Mrs\.? |Miss |Ms\.? ) сопоставляет все вхождения строк "Mr", "Mr.", "Mrs", "Mrs.", "Miss", "Ms" или "Ms.". После вызова метода Regex.Replace сопоставленная строка заменяется на String.Empty; другими словами, она удаляется из исходной строки.

Пример 2: Поиск повторяющихся слов

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

Шаблон регулярного выражения \b(\w+?)\s\1\b интерпретируется следующим образом:

Шаблон Интерпретация
\b Начало на границе слова.
(\w+?) Соответствует одному или нескольким символам слова (как можно меньшему количеству). Вместе они формируют группу, к которой можно обращаться как к \1 .
\s Соответствует пробелу.
\1 Сопоставление подстроки, равной группе с именем \1 .
\b Соответствует границе слова.

Метод Regex.Matches вызывается с параметрами регулярного выражения RegexOptions.IgnoreCase. Поэтому операция сопоставления учитывает регистр, а пример указывает, что подстрока "This this" является повтором.

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

На компьютере с региональными параметрами "English - United States (en-US)" пример динамически создает регулярное выражение \$\s*[-+]?(1(,5)*(\.5+)?) . Шаблон регулярного выражения интерпретируется следующим образом:

Шаблон Интерпретация
\$ Выполняется поиск одного вхождения символа доллара ( $ ) во входной строке. Строка шаблона регулярного выражения содержит обратную косую черту, что говорит о том, что символ доллара интерпретируется буквально, а не как привязка регулярного выражения. (Отдельный символ $ указывает, что механизм регулярных выражений должен начинать сопоставление с конца строки.) Чтобы правильно обработать текущий символ валюты, в примере вызывается метод Regex.Escape, который экранирует символ.
\s* Поиск нуля или нескольких вхождений пробела.
[-+]? Поиск нуля или нескольких вхождений знака плюс или минус.
(3(,4)*(\.5+)?) Внешние круглые скобки вокруг этого выражения делают его захватываемой группой или частью выражения. Если найдено соответствие, сведения об этой части строки можно получить из второго объекта Group в объекте GroupCollection, который возвращается свойством Match.Groups. (Первый элемент в коллекции представляет все сопоставление.)
5 Поиск 0-3 вхождений десятичных цифр (0-9).
(,2)* Поиск нуля или нескольких вхождений разделителя группы, за которыми следуют три десятичные цифры.
\. Поиск одного вхождения десятичного разделителя.
1+ Поиск одной или нескольких десятичных цифр.
(\.1+)? Поиск нуля или одного вхождения десятичного разделителя, за которым следует по крайней мере одна десятичная цифра.

Если каждый из этих подшаблонов найден во входной строке, сопоставление является успешным, а объект Match с информацией о сопоставлении добавляется в объект MatchCollection.

Регулярные выражения также состоят из обычных и метасимволов и работают по тому же принципу, но имеют гораздо больше возможностей и, соответственно, более сложный синтаксис. Так предыдущий пример (*.txt) с помощью регэкспов будет выглядеть так (.*\.txt).

Оператор match

″PowerShell″ -match ″power″ -> True
″Shell″ -match ″power″ -> False

Если же оператору скормить несколько строк, то он вернет те, которые подходят под заданное выражение:

″Power″, ″Shell″ -match ″power″ -> Power

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

″PowerShell″ -match ″rsh″ -> True

оператор match

С помощью оператора match можно обрабатывать не только текстовые данные, но и любые другие объекты. В качестве примера получим список служб и выберем те из них, в названии которых присутствует ″event″:

использование оператора match

Регистрозависимость

″PowerShell″ -match ″power″ -> True

Если необходимо учитывать регистр символов, то можно приставить к оператору сравнения букву С (от Case Sensitive). Получившийся оператор cmatch регистрозависим, соответственно при его использовании выражение уже не будет соответствовать действительности:

″PowerShell″ -cmatch ″power″ -> False

Кроме того, есть возможность включать регистрозависимость средствами самих регулярных выражений, где в качестве переключателей используются конструкции (?i) и (?-i). При использовании оператора match (?-i) включает зависимость от регистра, а (?i) отключает. Например:

″PowerShell″ -match ″(?-i)power″ -> False
″PowerShell″ -match ″(?i)power″ -> True

Плюс использования (?i) и (?-i) в том, что с их помощью можно задавать регистрозависимость не для всего выражения, а для его части. Например:

″PowerShell″ -match ″power(?-i)Shell″ -> True
″PowerShell″ -match ″power(?-i)shell″ -> False

включение зависимости от регистра символов

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

Get-Service | where
Get-Service | where

пример регистрозависимости

Якоря

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

Метасимволы крышка ^ и \A совпадают с началом строки, перед первым символом. Для примера выведем список служб, начинающихся с символа ″b″:

символ начала строки

Метасимволы доллар $, \Z или \z совпадают с окончанием строки. Для примера выведем список служб, заканчивающихся на ″s″:

символ конца строки

Здесь может возникнуть вопрос, есть ли отличия между якорями (например между $,\Z и \z) и когда какой из них лучше использовать. Для этого представим разбираемый с помощью регулярного выражения объект как текст, состоящий из физических строк (string), разделенных символом новой строки (\n):

По умолчанию объект обрабатывается построчно, однако существует расширенный режим привязки к строкам (multiline), в котором одной логической строке могут соответствовать несколько физических строк, разделенных символом \n. В зависимости от режима обработки совпадение символов может различаться:

Границы

Как уже было сказано, для регулярного выражения нет необходимости в точном совпадении, достаточно наличия искомых символов в тексте. Так например слово ″cat″ будет найдено не только в ″My cat is fat″, но и в ″bob cat ″, ″ cat egory″, ″stac cat o″ и прочих, которые не имеют ни малейшего отношения к кошачьим. Поэтому, если необходимо только целое слово, можно обозначить его границы (boundaries) с помощью метасимвола \b.

Для примера выведем список файлов в директории, содержащих в названии слово power:

Get-ChildItem ′C:\Files\PS Books′ | where

А теперь предположим, что мне нужно, чтобы слово power в названии присутствовало отдельно от прочих. Изменим команду, обозначив границы слова:

Get-ChildItem ′C:\Files\PS Books′ | where

границы слова

Get-ChildItem ′C:\Files\PS Books′ | where

неграницы слова

Примечание. На всякий случай уточню, что метасимволы \b и \B вовсе не обязаны быть парными. Их можно использовать поодиночке и в различных сочетаниях, например \bpower, power\B или \bpower\B.

Классы символов

Примерно определившись, где искать, переходим к тому, что искать. Для поиска в регулярных выражениях можно использовать классы символов. Например, символьный класс [ds] совпадает с одним любым из указанных в скобках символов:

группа символов

Символы в классе можно указывать не по одному, а задавать в виде диапазона. Например [e-v] совпадает с одним любым символом, находящемся в указанном диапазоне (от e до v):

диапазон символов

Примечание. Знак дефис (-) внутри класса является метасимволом и обозначает диапазон символов. Если вы хотите указать дефис как обычный символ, то его необходимо поставить в начале выражения, например так [-a-z], либо экранировать.

Отдельные символы и диапазоны можно комбинировать, например [adev-z] означает ″a или d или e или любой символ от v до z″. Подобным образом можно обозначать любые классы символов, например [a-z] означает любой символ латинского алфавита, а 3 соответственно любую цифру.

Для наиболее распространенных классов есть сокращенные обозначения:

Примечание. В класс \w могут входить и символы других алфавитов, в зависимости от используемого на компьютере языка.

Для примера выведем список файлов в директории, в названии которых присутствуют цифры:

Get-ChildItem ′C:\Files\PS Books′ | where

класс символов

Ну и наиболее общим символьным классом в регулярных выражениях является точка (.), которая описывает один любой символ. Для примера выведем службу с именем, начинающимся на b, заканчивающуюся на s, между которыми могут находиться любые два символа:

пример использования символов начала и окончания строки

Отрицательные классы

Иногда проще пойти от обратного, т.е. не перечислять все символы, которые должны присутствовать в строке, а указать только те, которых там быть не должно. Сделать это можно с помощью уже знакомого нам символа крышка (^). Так выражение [^adf] означает ″любой символ кроме a,d или f″. Крышка, поставленная в качестве первого символа в классе, означает отрицание, а сам класс называется отрицательным (или инвертированным).

Для примера выведем все файлы в директории, кроме файлов с расширением pdf:

Get-ChildItem ′C:\Files\PS Books′ | where

отрицательная группа

Для основных классов (\w,\d,\s) есть альтернативный вариант отрицания. Для того, чтобы включить в них отрицание, достаточно перевести их в верхний регистр:

Оператор notmatch

Get-ChildItem ′C:\Files\PS Books′ | where

оператор notmatch

Экранирование

Как уже упоминалось, в регулярных выражениях есть обычные символы и метасимволы. Но иногда бывает необходимо использовать метасимволы в качестве обычных литералов. Сделать это можно, заэкранировав метасимвол с помощью обратного слэша (\).

Например, нам нужно найти все файлы, содержащим инициалы E. в названии. Попробуем сделать так:

Get-ChildItem ′C:\Files\PS Books′ | where

Поскольку в данном случае точка является метасимволом, то в результате мы получим файлы, имеющие в своем названии ″букву E, за которой следует один любой символ″. А теперь заэкранируем точку и получим нужный результат:

1. Введение

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

Специальные метасимволы позволяют определять, например, что мы ищем подстроку в начале входной строки или n повторений определённого символа.

Регулярные выражения предназначены главным образом для профессионалов, однако могут быть полезны и при работе в офисе для поиска определённых документов (см. примеры ниже).

Double Commander поддерживает регулярные выражения в следующих функциях:

  • Команды > Поиск файлов (в имени файла)
  • Во встроенном редакторе
  • В инструменте группового переименования

2. Простое сравнение

Любой символ совпадает с самим собой, если он не относится к специальным метасимволам, описанным чуть ниже.

Последовательность символов совпадает с такой же последовательностью во входной строке, так что шаблон "bluh" совпадет с подстрокой "bluh" во входной строке.

Если необходимо, чтобы метасимволы или escape-последовательности воспринимались как обычные символы, их нужно предварять символом "\" ("экранировать"), например, метасимвол "^" обычно совпадает с началом строк, однако, если записать его как "\^", то он будет совпадать с символом "^", "\\" совпадает с "\" и т.д.

3. Escape-последовательности

Любой символ может быть определён с помощью escape-последовательности так же, как это делается в языках C или Perl: "\n" означает начало строки, "\t" — табуляцию и т.д.

\xnn, где nn — это последовательность шестнадцатеричных цифр, означает символ с ASCII-кодом nn.

Если необходимо определить двухбайтный (Юникод) символ, используем формат "\x", где "nnnn" — одна или более шестнадцатеричных цифр.

4. Наборы символов

Вы можете определить набор, заключив символы в []. Набор будет совпадать с любым одним символов из перечисленных в нём.

Если первым символом набора (сразу после "[") идёт "^", то такой набор совпадает с любым символом не перечисленным в наборе.

Внутри набора символ "-" может быть использован для определения диапазона символов, например, a-z представляет все символы между "a" и "z", включительно.

Если необходимо включить в набор сам символ "-", поместите его в начало или конец набора или предварите символом "\".

Если вам необходимо поместить в набор сам символ "]", поместите его в самое начало или предварите "\".

5. Метасимволы

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

Существует несколько типов метасимволов.

5.1. Метасимволы - разделители строк

Выражения, помогающие указать разделители строк.

Метасимвол "^" по умолчанию совпадает только с началом входного текста, а метасимвол "$" — только с концом текста. Внутренние разделители строк, имеющиеся в тексте, не будут совпадать с "^" и "$".

Однако, если вам необходимо работать с текстом как с многострочным, чтобы "^" совпадал после каждого разделителя строки внутри текста, а "$" — перед каждым разделителем, то вы можете включить модификатор m.

Метасимволы \A и \Z аналогичны "^" и "$", но на них не действует модификатор m, т.е. они всегда совпадают только с началом и концом всего входного текста.

Метасимвол "." по умолчанию совпадает с любым символом, однако, если вы выключите модификатор s, то "." не будет совпадать с разделителями строк.

"^" совпадает с началом входного текста, а также, если включен модификатор m, с точкой, непосредственно следующей после \x0D\x0A, \x0A или \x0D (если вы используете Юникод-версию TRegExpr, то также \x2028, \x2029, \x0B, \x0C или \x85). Обратите внимание, что он не совпадает в промежутке внутри последовательности \x0D\x0A.

"$" совпадает с концом входного текста, а также, если включен модификатор m, с точкой, непосредственно предшествующей \x0D\x0A, \x0A или \x0D (если вы используете Юникод-версию TRegExpr, то также \x2028, \x2029, \x0B, \x0C или \x85). Обратите внимание, что он не совпадает в промежутке внутри последовательности \x0D\x0A.

"." совпадает с любым символом, но если выключен модификатор s, то "." не совпадает с \x0D\x0A, \x0A и \x0D (если вы используете Юникод-версию TRegExpr, то не совпадает также с \x2028, \x2029, \x0B, \x0C и \x85).

Обратите внимание, что "^.*$" (шаблон для пустой строки) не совпадает с пустой строкой вида \x0D\x0A, но совпадает с \x0A\x0D.

5.2. Метасимволы - стандартные наборы символов

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

Стандартные наборы \w, \d и \s можно использовать и внутри наборов символов .

5.3. Метасимволы - границы слов

Граница слова (\b) — позиция между двумя символами, один из которых удовлетворяет \w, а другой — \W (в любом порядке), при этом перед началом и после конца строки подразумевается \W.

5.4. Метасимволы - повторения

После любого элемента регулярного выражения может следовать очень важный тип метасимвола — повторитель (квантификатор).

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

Таким образом, задаёт минимум n повторов и максимум — m.

Повторитель эквивалентен и задаёт точно n повторов.

Повторитель задаёт минимум n повторов.

Теоретически величина параметров n и m не ограничена, но рекомендуется не задавать большие значения, поскольку в связи с рекурсивным характером работы обработка такого повторителя в некоторых ситуациях может потребовать существенных затрат времени и ОЗУ.

Если фигурные скобки встречаются в "неправильном" месте, где они не могут быть восприняты как повторитель, то они воспринимаются просто как символы.

Небольшое пояснение по поводу "жадности".

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

Например, "b+" как и "b*" примененные к входной строке "abbbbc" найдут "bbbb", в то время как "b+?" найдёт только "b", а "b*?" — вообще пустую строку; "b?" найдёт "bb", в то время как "b" найдёт "bbb".

Вы можете переключить все повторители в выражении в "не жадный" режим, воспользовавшись модификатором g.

5.5. Метасимволы - варианты

Вы можете определить набор вариантов , используя метасимвол "|" для их разделения, например "fee|fie|foe" найдёт или "fee", или "fie", или "foe" (так же, как "f(e|i|o)e").

В качестве первого варианта воспринимается всё от предыдущего метасимвола ("(", "[" или от начала выражения) до первого метасимвола "|", в качестве последнего — всё от последнего "|" до конца выражения или до ближайшего метасимвола ")".

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

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

Это означает, что варианты не обязательно обеспечат "жадное" поведение.

Например, если применить выражение "foo|foot" ко входной строке "barefoot", то будет найдено "foo" т.к. это первый вариант, который позволил совпасть всему выражению.

Обратите внимание, что метасимвол "|" внутри наборов символов воспринимается как обычный символ, например, [fee|fie|foe] означает ровно то же самое что и [feio|].

5.6. Метасимволы - подвыражения

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

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

Первое подвыражение имеет номер "1", поддерживается до 90 подвыражений (выражение целиком — "0", к нему можно обращаться как "$0" или "$&").

Примечания о шаблонах "Заменить на":

  • Если вы хотите использовать в шаблоне символы "$" и "\" как есть, то экранируйте их символом "\".
    Пример: "1\$ \- это $2\\rub\\" вернёт "1$ - это <подвыражение2>\rub\".
  • Если вы хотите использовать цифры сразу после "$n", то должны взять n в фигурные скобки "<>".
    Например, "a$12bc" вернёт "a<подвыражение12>bc", но "a$2bc" вернёт "a<подвыражение1>2bc".

Перевернём дату "21.01.2018" > "2018.01.21":
найти: (\d)\.(\d)\.(\d)
заменить: $3.$2.$1

5.7. Метасимволы - обратные ссылки

6. Модификаторы

Модификаторы служат для изменения режимов работы регулярных выражений.

Любой модификатор может располагаться внутри регулярного выражения с помощью специальной конструкции (. ).

Если эта конструкция расположена внутри подвыражения, то она действует только на это подвыражение.

Модификатор x заставляет игнорировать пробелы, табуляции и разделители строк, что позволяет форматировать текст выражения.

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

Читайте также: