10.2. Использование регулярных выражений для поиска и замены текста.

Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Самоучитель Python 3, собранный из материалов данного сайта. Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

1. Точка `.` - соответствует любому символу, кроме символа новой строки.
import re

text = "cat bat mat rat"
pattern = r".at"  # Находим слова, оканчивающиеся на "at"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['cat', 'bat', 'mat', 'rat']
 
2. Символ начала строки `^` - соответствует началу строки.
import re

text = "hello world"
pattern = r"^hello"  # Ищем слово, начинающееся с "hello"
match = re.search(pattern, text)
if match:
    print(match.group())  # Вывод: 'hello'
 
3. Символ конца строки `$` - соответствует концу строки.
import re

text = "hello world"
pattern = r"world$"  # Ищем слово, заканчивающееся на "world"
match = re.search(pattern, text)
if match:
    print(match.group())  # Вывод: 'world'
 
4. Символ нулевого или более вхождений `*` - соответствует нулю или более вхождениям предшествующего элемента.
import re

text = "ac abc abbc abbbc"
pattern = r"ab*c"  # Ищем "a", за которым идет ноль или более "b", а затем "c"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['ac', 'abc', 'abbc', 'abbbc']
 
5. Символ одного или более вхождений `+` - соответствует одному или более вхождениям предшествующего элемента.
import re

text = "ac abc abbc abbbc"
pattern = r"ab+c"  # Ищем "a", за которым идет один или более "b", а затем "c"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['abc', 'abbc', 'abbbc']
 
6. Символ нулевого или одного вхождения `?` - соответствует нулю или одному вхождению предшествующего элемента.
import re

text = "colour color"
pattern = r"colou?r"  # Ищем "colou" с нулевым или одним "u", за которым следует "r"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['colour', 'color']
 
7. Поиск email-адресов:
import re

text = "Emails: test@example.com, another.test@mail.co.uk"
pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['test@example.com', 'another.test@mail.co.uk']
 
8. Поиск URL:
import re

text = "Visit my website at https://www.example.com"
pattern = r"https?://(?:www\.)?([a-zA-Z0-9-]+\.[a-zA-Z]{2,})"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['example.com']
 
9. Поиск хэштегов в Twitter:
import re

text = "Check out #Python and #DataScience on Twitter!"
pattern = r"#\w+"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['#Python', '#DataScience']
 
10. Поиск IP-адресов:
import re

text = "IP addresses: 192.168.1.1 and 10.0.0.1"
pattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['192.168.1.1', '10.0.0.1']
 
11. Поиск даты в формате DD/MM/YYYY:
import re

text = "Dates: 20/01/2022 and 31/12/2023"
pattern = r"\b(0[1-9]|[12]\d|3[01])/(0[1-9]|1[0-2])/(\d{4})\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: [('20', '01', '2022'), ('31', '12', '2023')]
 
12. Поиск HTML-тегов:
import re

text = "<p>This is a paragraph</p> <a href='https://example.com'>Link</a>"
pattern = r"<.*?>"  # Жадный поиск всех символов между "<" и ">"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['<p>', '</p>', '<a>', '>', '</a>']
 
13. Поиск слов, начинающихся с заглавной буквы:
import re

text = "Hello world, Python is Amazing"
pattern = r"\b[A-Z][a-z]*\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['Hello', 'Python', 'Amazing']
 
14. Поиск слов, которые начинаются и заканчиваются на одну и ту же букву:
import re

text = "level deed book car door"
pattern = r"\b(\w)\w*\1\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['level', 'deed', 'book']
 
15. Поиск двух или более повторяющихся символов:
import re

text = "ssss yyyy aa bb cccc"
pattern = r"\b(\w)\1{1,}\b"
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['ssss', 'yyyy', 'cccc']
 
14. Поиск слов с определенным количеством символов:
import re

text = "apple banana orange kiwi"
pattern = r"\b\w{6}\b"  # Ищем слова длиной в 6 символов
matches = re.findall(pattern, text)
print(matches)  # Вывод: ['banana', 'orange']

категории

ТЕОРИЯ

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы

Мы в соцсетях