Come posso estendere il codice qui sotto per permettermi di esplorare tutte le istanze in cui ho 2 disallineamenti o meno tra la mia sottostringa e la stringa padre?String regex due disallineamenti Python
Substring: SSQP
String-a-match-a: SSPQQQQPSSSSQQQSSQPSPSQSSQPSSQPPSSSSQPSPSQSSQPSSSSQPSPSQSSQPSSSSQPSPSQ
Ecco un esempio in cui è incorporato un solo possibile disallineamento:
>>> s = 'SSPQQQQPSSSSQQQSSQPSPSQSSQPSSQPPSSSSQPSPSQSSQPSSSSQPSPSQSSQPSSSSQPSPSQ'
>>> re.findall(r'(?=(SSQP|[A-Z]SQP|S[A-Z]QP|SS[A-Z]P|SSQ[A-Z]))', s)
['SSQQ', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP']
Ovviamente, incorporante il possibilità di due disallineamenti nel codice sopra richiederebbe un sacco di tipizzazione a forza bruta di tutte le combinazioni possibili.
Come posso estendere questo codice (o refactificare questo codice) per esplorare la possibilità di due disallineamenti?
Inoltre, desidero modificare l'output in modo da ottenere l'indice numerico restituito (non SSQQ
o SSQP
) della posizione esatta della sottostringa corrispondente alla stringa.
In effetti, le espressioni regolari sono solo lo strumento sbagliato da utilizzare del tutto. Per 2 errori su 20, ci sarebbero 190 alternati nel modello. –
Puoi restituire i numeri di indice, in modo simile alla tecnica 'match.start (0)' di 200_successo? – warship
@warship Acquista la modifica! – Kasramvd