Наборы символов в регулярных выражениях в Python

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

Содержание

Использование наборов символов в регулярных выражениях в Python

Character set (или класс символов) — это набор символов, например цифр (от 0 до 9), букв (от a до z) и пробелов. Набор символов позволяет создавать регулярные выражения с шаблонами, которые соответствуют строке с одним или несколькими символами в наборе.

\d: набор символов цифр

Регулярные выражения используют \d для представления набора символов, который соответствует одной цифре от 0 до 9.

В следующем примере функция finditer() используется для сопоставления каждой отдельной цифры в строке с использованием набора символов \d:

import re

s = 'Python 3.0 was released in 2008'
matches = re.finditer('\d', s)
for match in matches:
    print(match.group())

Выход:

3
0
2
0
0
8

Чтобы сопоставить группу из двух цифр, вы используете \d\d. Например:

import re

s = 'Python 3.0 was released in 2008'
matches = re.finditer('\d\d', s)
for match in matches:
    print(match.group())

Выход:

20
08

Аналогичным образом вы можете сопоставить группу из четырех цифр, используя шаблон \d\d\d\d:

import re

s = 'Python 3.0 was released in 2008'
matches = re.finditer('\d\d\d\d', s)
for match in matches:
    print(match.group())

Выход:

2008

Позже вы узнаете, как использовать квантификаторы для сокращения шаблона. Поэтому вместо использования шаблона \d\d\d\d вы можете использовать более короткий, например \d{4}.

\w: набор символов слов

Регулярные выражения используют \w для представления набора символов слова. \w соответствует одному символу ASCII, включая латинский алфавит, цифру и подчеркивание(_).

В следующем примере функция finditer() используется для сопоставления каждого символа слова в строке с использованием набора символов \w:

import re

s = 'Python 3.0'
matches = re.finditer('\w', s)
for match in matches:
    print(match.group())

Выход:

P
y
t
h
o
n
3
0

Обратите внимание, что пробелы и точки не участвуют.

\s : набор символов пробелов

\s соответствует пробелу, включая пробел, табуляцию, новую строку, возврат каретки и вертикальную табуляцию.

В следующем примере используется набор символов пробелов для соответствия пробелу в строке:

import re

s = 'Python 3.0'
matches = re.finditer('\s', s)
for match in matches:
    print(match)

Выход:

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

Инверсные наборы символов

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

Набор символов Инверсный набор символов Описание
\d \D Соответствует одному символу, кроме цифры
\w \W Сопоставляет один символ, который не является символом слова
\s \S Соответствует одному символу, кроме пробела

В следующем примере \D используется для сопоставления нецифрового номера телефона:

import re

phone_no = '+1-(650)-513-0514'
matches = re.finditer('\D', phone_no)
for match in matches:
    print(match.group())

Выход:

+
-
(
)
-
-

Чтобы превратить номер телефона +1-(650)-513-0514 в 16505130514, вы можете использовать функцию sub():

import re

phone_no = re.sub('\D', '', '+1-(650)-513-0514')
print(phone_no)

Выход:

16505130514

В этом примере функция sub() заменяет символ, соответствующий шаблону \D, на литеральную строку » в отформатированном телефонном номере.

Набор символов точка(.)

Набор символов точка(.) соответствует любому отдельному символу, кроме новой строки(\n). В следующем примере используется набор символов точка(.), соответствующий каждому символу, кроме новой строки:

import re

version = "Python\n4"
matches = re.finditer('.', version)
for match in matches:
    print(match.group())

Выход:

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

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