Python 如何修复此不工作的正则表达式模式匹配?

Python 如何修复此不工作的正则表达式模式匹配?,python,regex,python-2.7,match,Python,Regex,Python 2.7,Match,我使用re.compile尝试匹配一个模式。但是,我无法使脚本产生所需的结果。下面是我希望从下面的HTML中提取的一些HTML代码的示例,我希望从下面的HTML中生成两个列表项 下面是我选择两个列表项的尝试: import re def getData(): trans_array = "" ##HTML data here pattern2 = re.compile('<table width="100%" border="0" class="tbl t3 mob

我使用re.compile尝试匹配一个模式。但是,我无法使脚本产生所需的结果。下面是我希望从下面的HTML中提取的一些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()

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

默认情况下。正则表达式中的“”与新行字符不匹配。将flags=re.S参数添加到re.compile中,您的regexp将正常工作。

默认情况下。正则表达式中的“”与新行字符不匹配。将flags=re.S参数添加到re.compile中,您的regexp将正常工作。

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

re.compile('(?s)<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*?)</table>')
?s的作用与flags=re.s相同


此外,我认为您希望使您的匹配不灵巧,以最大限度地匹配。这是通过使用。*完成的?而不是。*

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

re.compile('(?s)<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*?)</table>')
?s的作用与flags=re.s相同


此外,我认为您希望使您的匹配不灵巧,以最大限度地匹配。这是通过使用。*完成的?而不是。*

您应该使用S修饰符re.S将换行符与点匹配。。另外,不要忘了将表达式取消冻结。*?应该使用S修饰符re.S将换行符与点匹配。。还有,别忘了让你的表情不古板。*?