Наборы символов

В Python есть специальные обозначения для наборов символов:

  • \d - любая цифра
  • \D - любое нечисловое значение
  • \s - пробельные символы
  • \S - все, кроме пробельных символов
  • \w - любая буква, цифра или нижнее подчеркивание
  • \W - все, кроме букв, цифр или нижнего подчеркивания

Примечание

Это не все наборы символов, которые поддерживает Python. Подробнее смотрите в документации.

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

Например, получим время из строки лог-файла:

In [1]: log = '*Jul  7 06:15:18.695: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/3, changed state to down'

In [2]: re.search(r'\d\d:\d\d:\d\d', log).group()
Out[2]: '06:15:18'

Выражение \d\d:\d\d:\d\d описывает 3 пары чисел, разделенных двоеточиями.

Получение MAC-адреса из лог-сообщения:

In [3]: log2 = 'Jun  3 14:39:05.941: %SW_MATM-4-MACFLAP_NOTIF: Host f03a.b216.7ad7 in vlan 10 is flapping between port Gi0/5 and port Gi0/15'

In [4]: re.search(r'\w\w\w\w\.\w\w\w\w\.\w\w\w\w', log2).group()
Out[4]: 'f03a.b216.7ad7'

Выражение \w\w\w\w\.\w\w\w\w\.\w\w\w\w описывает 12 букв или цифр, которые разделены на три группы по четыре символа точками.

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