Наборы и диапазоны регулярных выражений в Python

В этом уроке вы узнаете, как использовать наборы и диапазоны регулярных выражений в Python для создания шаблонов, соответствующих набору символов.

Несколько символов или наборов символов внутри квадратных скобок [] означают совпадение любого символа или набора символов среди них.

Содержание

Наборы

Например, [abc] означает любой из трех символов. «а», «б» или «в». [abc] называется набором. И вы можете использовать набор обычных символов для построения шаблона поиска.

Например, следующая программа использует шаблон licen[cs]e, который соответствует как license, так и licence:

import re

s = 'A licence or license'

pattern = 'licen[cs]e'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())

Выход:

licence
license

Шаблон License[cs]e ищет:

  • licen
  • затем одну из букв [cs]
  • затем e.

Следовательно, это соответствует license и licence.

Диапазоны

Если набор состоит из множества символов, например, от a до z или от 1 до 9, перечислять их в наборе будет утомительно. Вместо этого вы можете использовать диапазоны символов в квадратных скобках. Например, [az] — это символ в диапазоне от a до z, а [0–9] — цифра от 0 до 9.

Кроме того, вы можете использовать несколько диапазонов в одних и тех же квадратных скобках. Например, [a-z0-9] имеет два диапазона, которые соответствуют символу от a до z или цифре от 0 до 9.

Аналогичным образом вы можете использовать один или несколько наборов символов внутри квадратных скобок, например, [\d\s] означает цифру или пробел.

Также вы можете смешивать символы с наборами символов. Например, [\d_] соответствует цифре или знаку подчеркивания.

Исключение набора или диапазона

Чтобы исключить набор или диапазон, используйте символ каретки(^) в начале набора и диапазона. Например, диапазон [^0–9] соответствует любому символу, кроме цифры. Это то же самое, что и набор символов \D.

Обратите внимание, что регулярное выражение также использует курсор(^) в качестве привязки, которая соответствует началу строки. Однако если вы используете курсор(^) внутри квадратных скобок, регулярное выражение будет рассматривать его как оператор отрицания, а не как якорь.

В следующем примере каретка(^) используется для отрицания набора [aeoiu] для соответствия согласным в строке «Python»:

import re

s = 'Python'

pattern = '[^aeoiu]'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())

Выход:

P
y
t
h
n
Похожие посты
Добавить комментарий

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