2010-11-11 6 views
0

je un fichier qui contient des paragraphes commençant par AB, je voulais obtenir tous ces paragraphes, j'ai utilisé le code suivant, mais il ne renvoie rien:correspondance un paragraphe commence par une lettre

import re 
paragraphs = re.findall(r'AB[.\n]+AD',text) #AD is the beginning of the next paragraph 

Toute idée Pourquoi cela n'a-t-il pas fonctionné?

Merci

+0

Peut-être 'r'AB. + \ NAD''? – khachik

Répondre

1

Essayez:

re.findall(r'AB.+?(?=AD)', text, re.DOTALL) 

Le drapeau re.DOTALL laissera le point couvrir tout compris les nouvelles lignes. Et (?=AD) correspondra à tout le dernier caractère avant AD, mais n'inclura pas AD dans la chaîne correspondante.

Vous pouvez ensuite rstrip() les chaînes résultantes pour supprimer tous les retours à la ligne à la fin.

0

de la documentation du module python re:

[] 
    Used to indicate a set of characters. Characters can be listed individually, 
    or a range of characters can be indicated by giving two characters and 
    separating them by a '-'. Special characters are not active inside sets. 

cela signifie que . à l'intérieur des crochets correspond à un point, et aucun caractère comme il le ferait nulle part ailleurs dans une expression rationnelle.

Questions connexes