我的python代码有问题。你知道吗
import re
page = '<ul id="talkList" class=aaaaaa <li class>First</li><li
class>Second</li><li class>Third</li>...'
pattern = re.compile(r'<ul id="talkList".*?(<li.*?</li>)', re.S)
stories = re.findall(pattern, page)
for story in stories:
print story
结果是:
<li class>First</li>
但我想结果是:
<li class>First</li>
<li class>Second</li>
<li class>Third</li>
我想匹配组(<li.*?</li>)
0或无限次。你知道吗
我该怎么办?你知道吗
谢谢!你知道吗
你能试着用下面的regexp来代替吗。你知道吗
这将如你所期望的那样起作用。你知道吗
使用star运算符:
输出:
小心
匹配0或更多将匹配空字符串,我不确定这是你需要的。你知道吗
建议
如果使用的是
re.findall
,则不需要在一个结果中匹配所有li
元素,因为所有结果匹配都将从findall
返回。你知道吗首先使用
re.search()
捕获<ul>...</ul>
块。 然后在生成的ul文本上使用re.findall()
分隔每个<li></li>
元素建议二
使用lxml或bs4解析html对象,这比编写自己的正则表达式来查找html元素要简单。你知道吗
相关问题 更多 >
编程相关推荐