Вопрос

Я хотел бы извлечь первый блок комментариев файла 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)

видеть:http://docs.python.org/2/library/re.html#re.s

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top