Подстрока Regex одно несоответствие в любом месте строки

Может кто-нибудь объяснить, почему код ниже возвращает пустой список:

>>> import re
>>> m = re.findall("(SS){e<=1}", "PSSZ")
>>> m
[]

Я пытаюсь найти общее количество случаев SS (и включает в себя возможность до одного несоответствия) в PSSZ,

Я видел похожий пример кода здесь: поиск строки, допускающей одно несоответствие в любом месте строки

1 ответ

Решение

Вы должны удалить e<= символы присутствуют внутри квантификатора диапазона. Квантификатор диапазона должен быть,

  • {n}, Повторяет предыдущий токен n количество раз.
  • {min,max} Повторяет предыдущий токен с минимального до максимального значения.

Это было бы,

m = re.findall("(SS){1}", "PSSZ")

или же

m = re.findall(r'SS','PSSZ')

Обновить:

>>> re.findall(r'(?=(S.|.S))', 'PSSZ')
['PS', 'SS', 'SZ']
Другие вопросы по тегам