Кажется, я не могу найти способ извлечь все комментарии, как в следующем примере.
>>> import re
>>> string = '''
... <!-- one
... -->
... <!-- two -- -- -->
... <!-- three -->
... '''
>>> m = re.findall ( '<!--([^\(-->)]+)-->', string, re.MULTILINE)
>>> m
[' one \n', ' three ']
блок с two -- --
не соответствует, скорее всего, из-за неправильного регулярного выражения. Может кто-нибудь указать мне правильное направление, как извлечь совпадения между двумя строками.
Привет, я проверил то, что вы, ребята, предложили в комментариях... вот рабочее решение с небольшим обновлением.
>>> m = re.findall ( '<!--(.*?)-->', string, re.MULTILINE)
>>> m
[' two -- -- ', ' three ']
>>> m = re.findall ( '<!--(.*\n?)-->', string, re.MULTILINE)
>>> m
[' one \n', ' two -- -- ', ' three ']
Благодарность!
re.findall('<!--(.*?)-->', string, re.DOTALL)
должен делать. Вам не нужно^\(-->)
здесь, потому что вопросительный знак делает его нежадным. - person BrtH   schedule 05.10.2012m = re.findall('[\w]+', string, re.MULTILINE)
? Кроме того, строка — очень плохое имя для, гм, строки. - person Ben   schedule 05.10.2012