Python regex, motif correspondant sur plusieurs lignes .. pourquoi cela ne fonctionne-t-il pas?
Je sais que pour l'analyse je devrais idéalement supprimer tous les espaces et les retours à la ligne (mais je faisais simplement une solution pour quelque chose que j'ai essayé et je ne peux pas comprendre pourquoi sa ne fonctionne pas.. j'ai enveloppé les différentes zones de texte dans mon document avec la wrappers comme "####1" et suis en train de l'analyser sur cette base, mais sa ne marche pas, peu importe ce que j'essaie, je pense que je suis en utilisant multiligne correctement.. tout conseil est apprécié
Ce ne retourne pas de résultats à tous:
string='
####1
ttteest
####1
ttttteeeestt
####2
ttest
####2'
import re
pattern = '.*?####(.*?)####'
returnmatch = re.compile(pattern, re.MULTILINE).findall(string)
return returnmatch
source d'informationauteur Rick | 2010-08-20
Vous devez vous connecter pour publier un commentaire.
Essayer
re.findall(r"####(.*?)\s(.*?)\s####", string, re.DOTALL)
(fonctionne avecre.compile
aussi, bien sûr).Cette regexp sera de retour tuples contenant le numéro de la section et de la section de contenu.
Pour votre exemple, c'est le retour
[('1', 'ttteest'), ('2', ' \n\nttest')]
.(BTW: votre exemple ne fonctionnera pas, pour multiligne chaînes, utilisez
'''
ou"""
)Multiligne ne veut pas dire
.
sera le match retour à la ligne, cela signifie que^
et$
sont limitées aux lignes seulementre.S
oure.DOTALL
fait.
match, et même de nouvelles lignes de.Source
http://docs.python.org/