Попробуйте r'\(#\d+\.\d+\)\}'
(
, )
, .
и }
являются специальными метасимволами, поэтому им предшествует \
, поэтому вместо них они встречаются буквально.
Вам также необходимо применить +
повторение к нужному элементу. Здесь он прикреплен к \d
- сокращенному номеру класса символов - для обозначения того, что только цифры могут появляться один или несколько раз.
Использование r'raw string literals'
упрощает работу с шаблонами регулярных выражений, поскольку вам не нужно чрезмерно избегать обратных косых черт.
Смотри также
Изменения
В учебных целях давайте рассмотрим несколько вариантов. Это покажет несколько основных функций регулярных выражений. Давайте сначала рассмотрим один из предпринятых паттернов:
\(\#+(\d\.\d)+\)\}
Давайте разберем детали для удобства чтения:
\( \#+ ( \d \. \d )+ \) \}
\__________/
this is one group, repeated with +
Итак, этот шаблон соответствует:
- Литерал
(
, за которым следует один или более #
- Вслед за одним или несколькими из:
- цифра, буквальная точка и цифра
- сопровождается литералом
)}
Таким образом, шаблон будет соответствовать, например, (###1.23.45.6)}
( как видно на rubular.com ). Очевидно, это не тот шаблон, который нам нужен.
Теперь давайте попробуем изменить шаблон решения и скажем, что, возможно, мы также хотим разрешить только последовательность цифр без последующего периода и следующих цифр. Мы можем сделать это, сгруппировав эту часть (…)
и сделав ее необязательной с помощью ?
.
BEFORE
\(#\d+\.\d+\)\}
\___/
let's make this optional! (…)?
AFTER
\(#\d+(\.\d+)?\)\}
Теперь шаблон соответствует, например. (#1.23)}
а также, например, (#666)}
( как видно на rubular.com ).
Ссылки