Sto riscontrando un po 'di problemi nel far funzionare una regex di Python durante la corrispondenza con il testo che si estende su più righe. Il testo esempio è ('\ n' è un ritorno a capo)Espressione regolare che corrisponde a un blocco di testo multilinea
some Varying TEXT\n
\n
DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n
[more of the above, ending with a newline]\n
[yep, there is a variable number of lines here]\n
\n
(repeat the above a few hundred times).
mi piacerebbe catturare due cose: la parte 'some_Varying_TEXT', e tutte le righe di testo maiuscolo che arriva due righe di sotto di essa in una cattura (posso rimuovere i caratteri di nuova riga in seguito). Ho provato con alcuni approcci:
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
e un sacco di variazioni del presente documento senza fortuna. L'ultimo sembra corrispondere le righe del testo una per una, il che non è quello che voglio veramente. Posso prendere la prima parte, nessun problema, ma non riesco a percepire le 4-5 righe di testo maiuscolo. Mi piacerebbe che match.group (1) sia un numero _ Variabile _ Testo e gruppo (2) da linea1 + riga2 + riga3 + ecc. Fino a quando non si incontra la riga vuota.
Se qualcuno è curioso, si suppone che sia una sequenza di amminoacidi che costituiscono una proteina.
C'è qualcos'altro nel file oltre alla prima riga e al testo in maiuscolo? Non sono sicuro del perché dovresti usare un'espressione regolare invece di dividere tutto il testo in caratteri di nuova riga e prendere il primo elemento come "some_Varying_TEXT". – UncleZeiv
sì, l'espressione regolare è lo strumento sbagliato per questo. – hop
Il testo di esempio non ha un carattere '>'. Dovrebbe? – MiniQuark