Question

Je voudrais extraire le premier bloc de commentaires d'un fichier CSS qui est comme ceci:

/*
author : name
uri : link
etc
*/

sans extraire les autres commentaires

/* header */
/* footer */

Alors j'ai essayé ceci:

print re.findall(r'\/\*(.*)\*\/', cssText )

Cela m'a donné tous les autres commentaires sauf le bloc dont j'ai besoin. Je l'ai donc changé en cela, pour être plus précis:

print re.findall(r'\/\*\n(.*)^\*\/', cssText )

Et le résultat n'était rien:

[]

Avez-vous des suggestions? Merci :-)

Était-ce utile?

La solution 3

Tu peux le faire:

css = """
/*
author : name
uri : link
etc
*/

bla bla bla. Blah blah
x: 10;
color: red;

/* header */
/* footer */
"""

import re

pat = r'\/\*([\S\s]*?)\*\/'

print re.findall(pat, css)
print re.search(pat, css).group()

Autres conseils

Si vous n'avez besoin que du premier commentaire, vous ne pouvez simplement utiliser que le premier résultat:

print re.findall(r'\/\*(.*)\*\/', cssText )[0]

Vous pouvez aussi utiliser re.search qui recherche la première occurrence correspondante:

print re.search(r'\/\*(.*)\*\/', cssText )

Lorsque vous correspondez à une chaîne multi-ligne, vous devez faire. Match n aussi:

print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S)

voir:http://docs.python.org/2/library/re.html#re.s

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top