Наборы и диапазоны регулярных выражений в 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