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

Foi útil?

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)

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top