Функция regex search() в Python с примерами
- Что такое функция regex search() в Python?
- Примеры использования функции Python regex search()
- 1) Поиск первого совпадения
- 2) Поиск первого слова, соответствующего шаблону, с помощью regex search()
- 3) Использование функции regex search() с флагом регулярного выражения
Что такое функция regex search() в Python?
re.search() — это функция встроенного модуля re, которая работает с регулярными выражениями. Функция search() имеет следующий синтаксис:
re.search(pattern, string, flags=0)
В этом синтаксисе:
- pattern — это регулярное выражение, которое вы хотите найти в строке.
- string — это входная строка.
- flags — это один или несколько флагов регулярного выражения, которые изменяют стандартное поведение шаблона.
Функция search() сканирует строку слева направо и находит первое место, где шаблон дает совпадение. Она возвращает объект Match, если поиск был успешным, или None в противном случае.
Примеры использования функции Python regex search()
Давайте рассмотрим несколько примеров использования функции 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
2) Поиск первого слова, соответствующего шаблону, с помощью regex search()
В следующем примере функция 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'>