1

我有一个模式,我正在尝试使用re.compile. 但是,我无法让脚本产生所需的结果。下面是我希望抓取的一些 HTML 代码的示例,我希望从下面的 HTML 中生成两个列表项。

下面也是我选择两个列表项的尝试:

import re

def getData():  

    trans_array = "" ##HTML data here
    pattern2 = re.compile('<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*)</table>')

    print re.findall(pattern2, trans_array)

getData()

我的感觉是我使用的代码应该可以工作,但它没有。任何建议或意见将不胜感激。

4

2 回答 2

3

默认情况下.,正则表达式中不匹配换行符。将flags=re.S参数添加到re.compile,您的正则表达式将起作用。

于 2013-07-30T10:18:37.147 回答
1

除非您另有说明,否则.in Regex 将不匹配换行符。但是,我认为不是使用flags=re.S来解决这个问题,而是一个更干净的解决方案是只使用 Regex 语法本身:

re.compile('(?s)<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*?)</table>')

(?s)做同样的事情flags=re.S

另外,我认为你想让你的匹配不贪婪以最大化匹配。这是通过使用(.*?)而不是(.*)

于 2013-07-30T14:08:30.803 回答