我希望得到我所有的内容。 我写了这段代码:
matchObj = re.search(r'<tr>(.*?)</tr>', txt, re.M|re.I|re.S)
但我只得到了第一组。
我如何获得所有团体?
提前致谢:)
答案 0 :(得分:8)
findall
matchObj = re.findall(r'<tr>(.*?)</tr>', txt, re.M|re.I|re.S)
search
只找到给定字符串中的第一个。
您可以在regex中了解有关可以使用的不同方法的更多信息。
然而,看起来你正在解析HTML。为什么不使用HTMl parser?
答案 1 :(得分:3)
要使用re.findall()
获得多个匹配项。
然而,使用正则表达式来解析HTML将变得非常丑陋和复杂。改为使用正确的HTML解析器。
Python有几个可供选择:
ElementTree示例:
from xml.etree import ElementTree
tree = ElementTree.parse('filename.html')
for elem in tree.findall('tr'):
print ElementTree.tostring(elem)
BeautifulSoup示例:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('filename.html'))
for row in soup.select('table tr'):
print row