我的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或无限次。
我该怎么办?
谢谢!
答案 0 :(得分:0)
Zero or More => (<li.*?</li>){0,}
答案 1 :(得分:0)
使用star运算符:
txt = 'abbabaa'
re.findall(r'(ab)*', txt)
输出:
['ab', '', 'ab', '', '', '']
匹配0或更多将匹配空字符串,我不确定你需要什么。
如果您使用的是re.findall
,则无需匹配一个结果中的所有li
个元素,因为所有匹配项都会从findall
返回。
首先使用<ul>...</ul>
捕获re.search()
块。
然后在生成的ul文本
<li></li>
分隔每个re.findall()
元素
答案 2 :(得分:0)
您可以尝试使用下面的正则表达式。
pattern = re.compile(r'(<li.*?</li>)', re.S)
这将按预期工作。
答案 3 :(得分:0)
查看tfidf = TfidfVectorizer(stop_words='english')
的文档:
re.findall()
您的RE在您的字符串中只有一个匹配项,因为只有一个 findall(pattern, string, flags=0)
Return a list of all non-overlapping matches in the string.
If one or more groups are present in the pattern, return a
list of groups; this will be a list of tuples if the pattern
has more than one group.
Empty matches are included in the result.
可以匹配。由于您的RE中有(一个)组,'<ul id="talkList"'
会返回该组。
如果您只使用re.findall()
作为您的RE,那么'<li.*?</li>'
会找到三场比赛并返回所有三场比赛:
re.findall()
输出:
import re
page = '<ul id="talkList" class=aaaaaa <li class>First</li><li class>Second</li><li class>Third</li>...'
pattern = re.compile(r'<li.*?</li>', re.S)
stories = re.findall(pattern, page)
for story in stories:
print story
答案 4 :(得分:0)
而不是
intentShare.putExtra(Intent.EXTRA_CONTENT,content);
使用
pattern = re.compile(r'<ul id="talkList".*?(<li.*?</li>)', re.S)
将解决您的问题