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()
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 :-)
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)