Наборы символов в регулярных выражениях в Python
В этом руководстве вы узнаете о наборах символов в регулярных выражениях, включая цифры, слова, пробелы и точку(.).
- Использование наборов символов в регулярных выражениях в Python
- \d: набор символов цифр
- \w: набор символов слов
- \s : набор символов пробелов
- Инверсные наборы символов
- Набор символов точка(.)
Использование наборов символов в регулярных выражениях в 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