2013-11-07 2 views
0

Я хотел бы, чтобы извлечь первый комментарий блок в CSS-файл, который выглядит так:Python: извлечение комментариев из файла CSS

/* 
author : name 
uri : link 
etc 
*/ 

без извлечения других комментариев

/* header */ 
/* footer */ 

Я пробовал это:

print re.findall(r'\/\*(.*)\*\/', cssText) 

Это дало мне все остальные комментарии, кроме блока, в котором я нуждаюсь. поэтому я изменил его на это, чтобы быть более точным:

print re.findall(r'\/\*\n(.*)^\*\/', cssText) 

и результат ничего не было:

[] 

У Вас есть предложения? Спасибо :-)

ответ

0

вы можете сделать это:

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() 
1

Если вам нужен только первый комментарий, вы можете просто использовать только первый результат:

print re.findall(r'\/\*(.*)\*\/', cssText)[0] 

Вы можете также использовать re.search который ищет первое вхождение соответствия:

print re.search(r'\/\*(.*)\*\/', cssText) 
+0

Работа с '[0]' дал мне первые комментарии только после того, как блок мне нужно. Другой работает с '.group()' и дает тот же результат, что и первый. – 4m1nh4j1

1

Когда вы подходите строку многострочный, вам необходимо ма ke. Матч \ п тоже:

print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S) 

см: http://docs.python.org/2/library/re.html#re.S

+0

Это тоже полезно, спасибо. – 4m1nh4j1

+0

Но, похоже, это не сработает. – 4m1nh4j1

+1

Упс, я испортил цитату/* вместо \\ *. Посмотрите сейчас, это должно сработать. – Maciek

Смежные вопросы