Você consegue fazer isso:
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()
Pergunta
Eu gostaria de extrair o primeiro bloco de comentários de um arquivo CSS que é assim:
/*
author : name
uri : link
etc
*/
sem extrair os outros comentários
/* header */
/* footer */
Então eu tentei isso:
print re.findall(r'\/\*(.*)\*\/', cssText )
Isso me deu todos os outros comentários, exceto o bloco de que preciso. Então eu mudei para isso, para ser mais preciso:
print re.findall(r'\/\*\n(.*)^\*\/', cssText )
E o resultado não foi nada:
[]
Você tem sugestões? Obrigado :-)
Solução 3
Você consegue fazer isso:
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()
Outras dicas
Se você precisar apenas do primeiro comentário, basta usar apenas o primeiro resultado:
print re.findall(r'\/\*(.*)\*\/', cssText )[0]
Você também pode usar re.search
que procura a primeira ocorrência correspondente:
print re.search(r'\/\*(.*)\*\/', cssText )
Quando você combina a string multi -line, você precisa fazer. Match n também:
print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S)