Я использую python 2.6 и пытаюсь найти кучу повторяющихся символов в строке, скажем, связку n
, например. nnnnnnnABCnnnnnnnnnDEF
. В любом месте строки число n
может быть переменной.Regex, найти шаблон только в середине строки
Если я построить регулярное выражение как это:
re.findall(r'^(((?i)n)\2{2,})', s)
,
я могу найти вхождения регистронезависимых n
-й только в начале строки, которая хорошо. Если я делаю это так:
re.findall(r'(((?i)n)\2{2,}$)', s)
,
я могу обнаружить те только в конце последовательности. Но как насчет посередине?
Сначала я думал использовать re.findall(r'(((?i)n)\2{2,})', s)
и двух предыдущих регулярных выражений (-ices?), Чтобы проверить длину возвращаемого списка и наличие n
-х либо в начале или в конце строки и делать логические тесты , но он быстро стал уродливым беспорядком if-else.
Затем я попытался re.findall(r'(?!^)(((?i)n)\2{2,})', s)
, который, кажется, Exlude начало только штраф, но (?!$)
или (?!\z)
в конце регулярного выражения только исключает в ABCnnnn
последнюю n
. Наконец, я попробовал re.findall(r'(?!^)(((?i)n)\2{2,})\w+', s)
, который, кажется, работает иногда, но я получаю странные результаты в других. Мне кажется, что мне нужен взгляд или взгляд, но я не могу обвести вокруг себя голову.
Try [ '(<^?!) ((П) \ 2 {2})' (<п?!) ($?!)] (HTTPS: //regex101.com/r/dY3cZ9/1). Вам не нужна встроенная версия модификатора без учета регистра '(? I)', просто используйте 're.I' (так как весь шаблон будет нечувствительным к регистру в любом случае при использовании' (? I) '). –
что не так с '((? I) n) \ 1 {2,}' https://regex101.com/r/oT6vZ1/1? –
или '\ B (?