python 2.7 re.MULTILINE проблемы - PullRequest
3 голосов
/ 18 марта 2012

Я новичок в python, и я пытался изменить свое PHP-регулярное выражение на python, но я столкнулся с некоторыми проблемами с этой многострочной вещью. Последние несколько дней я работал в Интернете, и мне кажется, что я не могу понять это, если кто-то может помочь, это было бы здорово. Вот регулярное выражение, которое я сделал:

mlsTagRegex = re.compile("<td\swidth=\"13%\"\sclass=\"TopHeader\">(.*?)</td>", re.MULTILINE)
tdTags = mlsTagRegex.findall(output.getvalue())
print tdTags

Вот HTML-код, который я хотел бы найти:

<td width="13%" class="TopHeader">

   <span class="red">I WANT THIS PART</span>

</td>

и это просто дает мне пустой массив. Я почти уверен, что то, что мне не хватает, возможно, довольно просто, но, как я уже сказал, я новичок в python, так что, если кто-то может помочь? Спасибо!

p.s .: вывод в findall - это то, что выводит pycurl, и эта часть html находится там.

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Вам нужно использовать re.DOTALL, чтобы . соответствовало символам новой строки:

mlsTagRegex = re.compile(r'<td width="13%" class="TopHeader">(.*?)</td>', re.DOTALL)

Но на самом деле вам следует избегать использования регулярных выражений для анализа html, используйте BeautifulSoup или lxml вместо.

1 голос
/ 18 марта 2012

Используйте re.DOTALL, поэтому '.' символ будет соответствовать любому символу, включая символ новой строки.

...