Ты можешь это сделать:
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()
Вопрос
Я хотел бы извлечь первый блок комментариев файла CSS, который похож на это:
/*
author : name
uri : link
etc
*/
без извлечения других комментариев
/* header */
/* footer */
Итак, я попробовал это:
print re.findall(r'\/\*(.*)\*\/', cssText )
Это дало мне все остальные комментарии, кроме блока, который мне нужен. Поэтому я изменил это в это, если быть более точным:
print re.findall(r'\/\*\n(.*)^\*\/', cssText )
И результат был ничто:
[]
Есть ли у вас предложения? Спасибо :-)
Решение 3
Ты можешь это сделать:
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()
Другие советы
Если вам нужен только первый комментарий, вы можете просто использовать только первый результат:
print re.findall(r'\/\*(.*)\*\/', cssText )[0]
Вы также можете использовать re.search
который ищет первое совпадение:
print re.search(r'\/\*(.*)\*\/', cssText )
Когда вы соответствуете Multi Line String, вам нужно сделать. совпадать n тоже:
print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S)