我想要使用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()
我的感觉是我使用的代码应该有效,但事实并非如此。任何建议或意见将不胜感激。
答案 0 :(得分:3)
默认情况下,正则表达式中的.
与新行字符不匹配。将flags=re.S
参数添加到re.compile
,您的正则表达式将起作用。
答案 1 :(得分:1)
除非你另有说明,否则Regex中的.
将不符合换行符。但是,我认为更简洁的解决方案是使用正则表达式语法本身而不是使用flags=re.S
来解决这个问题:
re.compile('(?s)<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*?)</table>')
(?s)
与flags=re.S
完全相同。
另外,我认为你想让你的比赛不符合最大化匹配。这是通过使用(.*?)
代替(.*)