Функция regex search() в Python с примерами

Содержание

Что такое функция regex search() в Python?

re.search() — это функция встроенного модуля re, которая работает с регулярными выражениями. Функция search() имеет следующий синтаксис:

re.search(pattern, string, flags=0)

В этом синтаксисе:

  • pattern — это регулярное выражение, которое вы хотите найти в строке.
  • string — это входная строка.
  • flags — это один или несколько флагов регулярного выражения, которые изменяют стандартное поведение шаблона.

Функция search() сканирует строку слева направо и находит первое место, где шаблон дает совпадение. Она возвращает объект Match, если поиск был успешным, или None в противном случае.

Давайте рассмотрим несколько примеров использования функции re.search().

1) Поиск первого совпадения

В следующем примере функция search() используется для поиска первого числа в строке:

import re

s = 'Python 3 was released on Dec 3, 2008'
pattern = '\d+'

match = re.search(pattern, s)

if match is not None:
    print(match.group())
else:
    print('No match found')

Выход:

<re.Match object; span=(7, 8), match='3'>

В этом примере шаблон \d+ соответствует одной или нескольким цифрам. Функция search() возвращает объект Match.

Чтобы получить совпадение, вы можете вызвать метод group() объекта Match следующим образом:

import re

s = 'Python 3 was released on Dec 3, 2008'
pattern = '\d+'


match = re.search(pattern, s)

if match is not None:
    print(match.group())

Выход:

3

В следующем примере функция search() используется для поиска первого слова, оканчивающегося на литеральную строку thon:

import re

s = 'CPython, IronPython, or Cython'
pattern = r'\b((\w+)thon)\b'

match = re.search(pattern, s)

if match is not None:
    print(match.groups())

Выход:

('CPython', 'CPy')

Шаблон r’\b((\w+)thon)\b’ имеет две группы захвата:

  • (\w+) – захватывает символы в начале слова.
  • ((\w+)thon) – захватывает все слово.

Функция search() возвращает первое место, где было найдено совпадение. Чтобы получить доступ ко всем группам в совпадении, используйте метод groups() объекта match.

Как ясно показано в выводе, метод groups() возвращает кортеж, содержащий все группы.

3) Использование функции regex search() с флагом регулярного выражения

В следующем примере функция search() используется для поиска первого слова Python в строке:

import re

s = 'Python or python'
pattern = r'\bpython\b'

match = re.search(pattern, s)
print(match)

Она возвращает слово python с буквой p в нижнем регистре, как указано в шаблоне.

<re.Match object; span=(10, 16), match='python'>

Чтобы сопоставить слово без учета регистра, вы можете передать флаг re.IGNORECASE в третий аргумент функции search(). Например:

import re

s = 'Python or python'
pattern = r'\bpython\b'

match = re.search(pattern, s, re.IGNORECASE)
print(match)

В этом примере функция search() возвращает слово Python с буквой P в верхнем регистре:

<re.Match object; span=(0, 6), match='Python'>
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *