======Примеры======
====Сочетаемость====
Несколько регулярных выражений можно склеивать между собой, чтобы сформировать новые выражения.
Например, если A и B являются регулярными выражениями, тогда AB тоже является регулярным выражением.
В общем случае, если строка p подпадает под шаблон A, а другая строка q подпадает под шаблон B, то строка pq подпадёт под AB. Исключение составляют случаи, когда :
1. A или B содержат условия;
2. в A или B используются пограничные описатели (\b);
3. A и/или B содержат нумерованные группы.
====findall====
import re
s = '''Это просто строка текста.
А это ещё одна строка текста.
А это строка с цифрами: 1, 2, 3, 4, 5, 6, 7, 8, 9, ٣, 0, 10
А это строка с разными символами: "!", "@", "-", "&", "?", "_"
a\\b\tc
test string'''
pattern = r'\w+'
print(re.findall(pattern, s))
pattern = r'[а-яё]+'
print(re.findall(pattern, s, flags=re.IGNORECASE))
pattern = r'[0-9]+'
print(re.findall(pattern, s))
pattern = r'\d+'
print(re.findall(pattern, s))
pattern = r'[\da-]+'
print(re.findall(pattern, s))
pattern = r'a\\b\tc'
print(re.findall(pattern, s))
pattern = r'\w+$'
print(re.findall(pattern, s, flags=re.IGNORECASE))
====search====
import re
s = 'Это просто строка текста. А это ещё одна строка текста.'
pattern = 'строка'
match = re.search(pattern, s)
print(match) #
print(match.span()) # (11, 17)
print(match.start()) # 11
print(match.end()) # 17
if re.search(pattern, s):
print('Matched')
else:
print('No match')
====match, пример валидации email======
import re
def validate_email(email):
return bool(re.match(r'^\w+@(\w+\.){0,2}[a-z]{2,6}$', email, re.IGNORECASE))
print(validate_email('mail@mail.com'))
print(validate_email('ivanov@bank'))
print(validate_email('mail@google.com.ua'))
print(validate_email('mail@google.com.infotest'))
====split====
s = 'Это просто строка текста. А это ещё одна строка текста.'
pattern = 'строка'
print(re.split(r'\.', s, 1)) #['Это просто строка текста', ' А это ещё одна строка текста.']
====compile====
# Компилируем выражение для последующего использования.
# Совместим два флага re.X и re.DEBUG
re_test = re.compile(r'''
(\d{4})\s # год
кот # просто кот
''', re.X | re.DEBUG)
# Строка '2018 кот' соответствует выражению.
# Получим содержимое первой группы (год).
re_test.match('2018 кот').group(1) # 2018
# Строка '2018 год' не соответствует выражению.
re_test.match('2018 год') # None