Регулярные выражения (regex) — мощный инструмент для сопоставления шаблонов и манипулирования текстом в Python. В этой статье блога мы рассмотрим различные приемы и методы работы с многострочными шаблонами с использованием регулярных выражений. Независимо от того, являетесь ли вы новичком или опытным разработчиком Python, это руководство предоставит вам знания для решения сложных сценариев с многострочными регулярными выражениями. Итак, хватайте свой любимый напиток и вперед!
Метод 1: использование флага re.DOTALL
Флаг re.DOTALL позволяет метасимволу точки (.) также соответствовать символам новой строки. Это полезно, если вы хотите сопоставить шаблоны, охватывающие несколько строк. Вот пример:
import re
text = '''
Hello,
How are you?
I'm doing great!
'''
pattern = r'Hello,.*great!'
matches = re.findall(pattern, text, re.DOTALL)
print(matches)
Вывод:
[‘Привет,\nКак дела?\nУ меня всё отлично!’]
Метод 2: использование флага re.MULTILINE
Флаг re.MULTILINE позволяет метасимволам курсора (^) и доллара ($) сопоставлять начало и конец каждой строки в многострочной строке. Это удобно, когда вам нужно сопоставить шаблоны в начале или конце отдельных строк. Вот пример:
import re
text = '''
Hello,
How are you?
I'm doing great!
'''
pattern = r'^Hello,|great!$'
matches = re.findall(pattern, text, re.MULTILINE)
print(matches)
Вывод:
[‘Привет’, ‘отлично!’]
Метод 3: использование флага (?s)
Флаг (?s) — это еще один способ включить метасимвол точки (.) для соответствия символам новой строки. Этот флаг влияет на поведение всего шаблона регулярного выражения. Вот пример:
import re
text = '''
Hello,
How are you?
I'm doing great!
'''
pattern = r'(?s)Hello,.*great!'
matches = re.findall(pattern, text)
print(matches)
Вывод:
[‘Привет,\nКак дела?\nУ меня всё отлично!’]
Метод 4: использование функции re.split()
Функция re.split() позволяет разделить многострочную строку на основе шаблона регулярного выражения. Это полезно, если вы хотите разделить текст на отдельные части с помощью многострочного разделителя. Вот пример:
import re
text = '''
apple
banana
cherry
'''
pattern = r'\n'
parts = re.split(pattern, text)
print(parts)
Вывод:
[», «яблоко», «банан», «вишня», «]
Метод 5: использование функции re.sub()
Функция re.sub() позволяет выполнять многострочные замены с использованием регулярных выражений. Это удобно, когда вам нужно заменить определенные шаблоны в нескольких строках. Вот пример:
import re
text = '''
Hello,
How are you?
I'm doing great!
'''
pattern = r'(?s)great'
replacement = 'awesome'
new_text = re.sub(pattern, replacement, text)
print(new_text)
Вывод:
”’
Привет,
Как дела?
У меня все отлично!
”’
В этой статье мы рассмотрели несколько методов работы с многострочными регулярными выражениями в Python. Мы рассмотрели такие методы, как использование флагов re.DOTALL и re.MULTILINE, использование флага (?s) и использование функций re.split() и re.sub(). Освоив эти методы, вы сможете обрабатывать сложные многострочные шаблоны и эффективно манипулировать текстом с помощью регулярных выражений в Python.