Sto usando python 2.6 e sto cercando di trovare un gruppo di caratteri ripetuti in una stringa, diciamo un gruppo di n
, ad es. nnnnnnnABCnnnnnnnnnDEF
. In qualsiasi punto della stringa il numero di n
può essere variabile.Regex, trova il modello solo nel mezzo della stringa
Se costruisco una regex come questo:
re.findall(r'^(((?i)n)\2{2,})', s)
,
posso trovare occorrenze di n
's case-insensitive solo all'inizio della stringa, che va bene. Se lo faccio in questo modo:
re.findall(r'(((?i)n)\2{2,}$)', s)
,
posso rilevare quelli solo alla fine della sequenza. Ma che dire solo nel mezzo?
Inizialmente, ho pensato di utilizzare re.findall(r'(((?i)n)\2{2,})', s)
e le due regex precedenti (-ices?) Per controllare la lunghezza dell'elenco restituito e la presenza di n
all'inizio o alla fine della stringa ed eseguire test logici , ma è diventato un brutto pasticcio seppur molto rapidamente.
Poi, ho provato re.findall(r'(?!^)(((?i)n)\2{2,})', s)
, che sembra dovuto escludere l'inizio più che bene, ma (?!$)
o (?!\z)
alla fine della regex esclude solo l'ultimo n
in ABCnnnn
. Infine, ho provato re.findall(r'(?!^)(((?i)n)\2{2,})\w+', s)
che sembra funzionare a volte, ma ottengo risultati strani agli altri. Mi sembra di aver bisogno di guardare avanti o di guardare indietro, ma non riesco a chiudermi la testa.
Prova [ '(<^?!) ((N) \ 2 {2,})' (
cosa c'è di sbagliato con '((? I) n) \ 1 {2,}' https://regex101.com/r/oT6vZ1/1? –
o '\ B (?