Общая информация 

Регулярные выражения (их еще называют regexp или regex) — это механизм для поиска и замены текста.

Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской») состоящая из символов и метасимволов, и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.

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

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

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

Результатом работы с регулярным выражением может быть:

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

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

Вспомогательные ссылки

1.              Статья «Основы Regex» - https://habr.com/ru/articles/545150/

2.              Сервис №1 для проверки регулярных выражений - https://regex101.com/

3.              Сервис №2 для проверки регулярных выражений - https://regexr.com/ 

4.              Банк регулярных выражений - https://regex101.com/library

5.              Примеры регулярных выражений -https://support.google.com/a/answer/1371417?hl=en 

6.              Банк готовых выражений - https://regexlib.com/. Лучше использовать протестированное выражение для сложных и типовых запросов типа имейла, который практически невозможно написать вручную

7.              Справочник по элементам регулярных выражений  - https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/regular-expression-language-quick-reference

8.              Еще один справочник по regexhttp://website-lab.ru/article/regexp/shpargalka_po_regulyarnyim_vyirajeniyam/ 

9.              Форматы для работы с датами (группа действий «Конвертация дат» в Studio) – https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

10.           Шаблоны для работы с файловой системой (группа действий «Файловая система» в Studio) -  https://en.wikipedia.org/wiki/Glob_(programming)

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

 1. Взять текст между заданным текстом -  (?<=start_text\s).+(?=\b\s+finish_text) , где start_text, finish_text - тексты, между   которыми надо взять текст

2.  Взять текст между заданным текстом - (?s)(?<=start_text).+?(?=finish_text), где  start_text, finish_text - тексты, между которыми надо взять текст

3.  Взять текст с заданным текстом - start_text\s+.+\s+finish_text , где start_text - текст, с которого надо взять текст и finish_text - текст, по который надо взять текст

4. Извлечь из текста год [2][0][0-2][0-9], регулярное выражение позволяет извлечь из текста четырехзначное число, у которого разряд тысяч = 2, разряд сотен = 0, разряд десятков = 0-2, разряд единиц 0-9.

5.  Извлечь из текста последовательность цифр \d{n}, где n - количество цифр в последовательности

6.  Извлечь из текста последовательность из произвольного количества чисел (\d+) 

7.  Проверить язык символов в строке [\P{Cyrillic}]. Регулярное выражение проверяет все символы строки на соответствие кириллице.

8.  Извлечение только числа из данных ячейки, где содержался текст и числовое значение, самый простой [0-9]+

9.   Извлечь из текста адрес почты (\S*@\S*\.\w+?\b) 

10. Избавление от многострочного текста ^\S.* 

11. Извлечь ФИО из текста в формате И.О. Фамилия (?<=)[А-ЯЁ](\.|_|)[А-ЯЁ](\.|_|)(\s|)[А-ЯЁ{1}][а-яё]

 

Часто используемые:

1.  Взять текст между заданным текстом

(?s)(?<=start_text).+?(?=finish_text)

, где  start_text, finish_text - тексты, между которыми надо взять текст

2. Извлечь из текста год

[2][0][1-2][0-9]

Регулярное выражение позволяет извлечь из текста четырехзначное число, у которого разряд тысяч = 2, разряд сотен = 0, разряд десятков = 1 или 2, разряд единиц 0 или 9.

3. Извлечь из текста адрес почты.

(\S*@\S*\.\w+?\b)

4. Извлечь из текста последовательность из произвольного количества чисел.

(\d+)

  • Нет меток