Du kannst das:
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()
Frage
Ich möchte den ersten Kommentarblock einer CSS -Datei extrahieren, die wie folgt ist:
/*
author : name
uri : link
etc
*/
ohne die anderen Kommentare zu extrahieren
/* header */
/* footer */
Also habe ich das versucht:
print re.findall(r'\/\*(.*)\*\/', cssText )
Dies gab mir alle anderen Kommentare außer dem Block, den ich brauche. Also habe ich es dazu geändert, genauer zu sein:
print re.findall(r'\/\*\n(.*)^\*\/', cssText )
Und das Ergebnis war nichts:
[]
Haben Sie Vorschläge? Vielen Dank :-)
Lösung 3
Du kannst das:
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()
Andere Tipps
Wenn Sie nur den ersten Kommentar benötigen, können Sie einfach nur das erste Ergebnis verwenden:
print re.findall(r'\/\*(.*)\*\/', cssText )[0]
Sie können auch verwenden re.search
die nach dem ersten passenden Ereignis sucht:
print re.search(r'\/\*(.*)\*\/', cssText )
Wenn Sie mit einer Multi -Line -Zeichenfolge übereinstimmen, müssen Sie erstellen. Match n auch:
print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S)