Подстрока 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']