J'ai un peu de mal à faire fonctionner une regex Python lors de la comparaison avec du texte qui s'étend sur plusieurs lignes. Le texte exemple est (« \ n » est un saut de ligne)Expression régulière correspondant à un bloc de texte multiligne
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).
Je voudrais saisir deux choses: la partie « some_Varying_TEXT », et toutes les lignes de texte en majuscules qui vient deux lignes ci-dessous dans une capture (je peux enlever les caractères de nouvelle ligne plus tard). J'ai essayé avec quelques approches:
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
et beaucoup de variations des présentes sans chance. Le dernier semble correspondre un à un aux lignes de texte, ce qui n'est pas ce que je veux vraiment. Je peux attraper la première partie, pas de problème, mais je n'arrive pas à attraper les 4-5 lignes de texte en majuscules. J'aimerais que match.group (1) soit _ Variable _ Le texte et le groupe (2) doivent être ligne1 + ligne2 + ligne3 + etc jusqu'à ce que la ligne vide soit rencontrée.
Si quelqu'un est curieux, il est censé être une séquence d'acides aminés qui composent une protéine.
Y at-il quelque chose d'autre dans le fichier en dehors de la première ligne et du texte en majuscule? Je ne sais pas pourquoi vous utiliseriez une regex au lieu de diviser tout le texte en caractères de nouvelle ligne et en prenant le premier élément comme "some_Varying_TEXT". – UncleZeiv
oui, regex sont le mauvais outil pour cela. – hop
Votre exemple de texte n'a pas de caractère '>' principal. Devrait-il? – MiniQuark