added regex cheatsheet

This commit is contained in:
cheatsnake 2022-10-16 19:16:05 +03:00
parent 9458233fcf
commit ef2da0a34b

View File

@ -0,0 +1,73 @@
# Шпаргалка по регулярным выражениям
[Регулярные выражения](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F) это мощный инструмент для поиска и замены слов в тексте. Само регулярное выражение представляет из себя обычную строку составленную по определенным правилами. В общем виде она представляет из себя две косые черты `/ /`, где после первой черты идёт специальный паттерн для поиска, а после второй набор флагов.
Для тренировки использования регулярных выражений можно воспользоваться сайтом [Regex101.com](https://regex101.com/).
Также можно воспользоваться возможностями для работы с регулярными выражениями в одном из языков программирования. Вот примеры для [Python](https://pythonru.com/primery/primery-primeneniya-regulyarnyh-vyrazheniy-v-python), [JavaScript](https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Regular_Expressions), [Go](https://tproger.ru/articles/puteshestvie-v-golang-regexp/), [Kotlin](https://java-blog.ru/kotlin/vvedenie-v-regulyarnye-vyrazheniya-kotlin), [C#](https://metanit.com/sharp/tutorial/7.4.php) и [так далее](https://www.google.com/search?q=%D0%BA%D0%B0%D0%BA+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F+%D0%B2+%5B%D0%B2%D0%B0%D1%88+%D1%8F%D0%B7%D1%8B%D0%BA+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%5D%5D)
## Базовое применение
Возьмем для примера любой текст. Представим, что в этом тексте нам нужно найти все слова `London`. Это самый простой случай использования регулярных выражения, нам всего лишь необходимо вписать нужное слово между косыми чертами:
<p align="center"><img src="https://i.ibb.co/cCsd7ss/Pasted-image-20221016151349.png" alt="Regex example"/></p>
## Флаги
Флаги влияют на результат поиска. Их всего 5 штук:
- `i` позволяет игнорировать регистры букв (нет разницы между *A* и *a*).
- `g` позволяет искать все совпадения в тексте, без него только первое.
- `m` включение многострочного режима (влияет только на поведение `^` и `$`).
- `s` текст трактуется как одна строка, в этом случае метасимволу `.` (точка) соответствует любой одиночный символ, включая символ новой строки.
- `u` unicode-трактовка. Выражение может содержать специальные паттерны, характерные для юникода.
## Специальные конструкции
#### Любой символ `.`
На месте точки может быть любой символ. Количеством точек можно определять длину слов.
```js
/t..k/g;
```
_take look team <ins>took</ins> hike track <ins>teak</ins> time_
#### Перечень `[]`
Позволяют указать определенный перечень символов.
```js
/t[aoi]k/g;
```
_tek <ins>tok</ins> tdk <ins>tak</ins> <ins>tik</ins> tuk tyk took taoik_
#### Исключающий перечень `[^]`
Позволяет исключить определенный набор символ из поиска, используется вместе с квадратными скобками.
```js
/ba[^td]/g;
```
_<ins>ban</ins> <ins>bag</ins> bat <ins>bas</ins> bad_
#### Диапазон `[-]`
Указывает диапазон с первого по последний символ (включительно) в алфавитном порядке.
```js
/[a-d]../g;
```
_ost hst <ins>ast</ins> fst <ins>cst</ins> <ins>bst</ins>_
Аналогично работает с цифрами:
```js
/201[5-9]/g;
```
_2010 2012 <ins>2015</ins> <ins>2017</ins> <ins>2019</ins> 2022_