41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
|
# Регулярные выражения
|
|||
|
|
|||
|
Источники:
|
|||
|
- [Хабр - Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения](https://habr.com/ru/articles/349860/)
|
|||
|
- Очень подробный и обстоятельный материал: https://www.regular-expressions.info/;
|
|||
|
- Разные сложные трюки и тонкости с примерами: http://www.rexegg.com/;
|
|||
|
- Онлайн визуализация регулярок https://www.debuggex.com/ (выбрать Python);
|
|||
|
---
|
|||
|
Примеры регулярных выражений
|
|||
|
|Регулярка|Её смысл|
|
|||
|
|----------|----------|
|
|||
|
| simple text| Cell 2 |
|
|||
|
| \d\d/\d\d/\d{4}| Даты в формате ДД/ММ/ГГГГ(и прочие куски, на них похожие, например, 98/76/5432)
|
|||
|
| \b\w{3}\b | Слова в точности из трёх букв \b означает границу слова (с одной стороны буква, а с другой — нет) \w — любая буква, {3} — ровно три раза |
|
|||
|
|[-+]?\d+| Целое число, например, 7, +17, -42, 0013 (возможны ведущие нули) [-+]? — либо -, либо +, либо пусто \d+ — последовательность из 1 или более цифр|
|
|||
|
|[-+]?(?:\d+(?:\.\d*)?\.\d+)(?:[eE][-+]?\d+)? | Действительное число, возможно в экспоненциальной записи Например, 0.2, +5.45, -.4, 6e23, -3.17E-14.|
|
|||
|
----
|
|||
|
import re
|
|||
|
```python
|
|||
|
txt = "sampleapp-ABCD-1234-us-eg-123456789"
|
|||
|
x = re.findall("([ABCD]+[-][0-9]+)", txt)
|
|||
|
print(x)
|
|||
|
```
|
|||
|
```python
|
|||
|
text = 'ул. Карпинского, дом № 20, корпус 3, квартира 98'
|
|||
|
# нет групп захвата
|
|||
|
match = re.findall(r'\d+', text)
|
|||
|
print(match)
|
|||
|
# ['20', '3', '98']
|
|||
|
```
|
|||
|
```python
|
|||
|
# одна группа захвата
|
|||
|
match = re.findall(r'(?i)([а-я]+)', text)
|
|||
|
print(match)
|
|||
|
# ['ул', 'Карпинского', 'дом', 'корпус', 'квартира']
|
|||
|
```
|
|||
|
```python
|
|||
|
# несколько групп захвата
|
|||
|
print(re.findall(r'(\w+)=(\d+)', 'set width=20 and height=10'))
|
|||
|
# [('width', '20'), ('height', '10')]
|
|||
|
```
|