mirror of
https://github.com/cheatsnake/backend-cheats.git
synced 2024-11-22 18:54:11 +03:00
added regex cheatsheet
This commit is contained in:
parent
9458233fcf
commit
ef2da0a34b
73
files/programming-language/regex-cheatsheet.md
Normal file
73
files/programming-language/regex-cheatsheet.md
Normal 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_
|
Loading…
Reference in New Issue
Block a user