我想使用正则表达式在网页中找到多个tags
,它们具有相同的模式:data-tag-slug="NAME"
,就像这样(只有一小部分):
...category="rating" data-tag-id="40482" data-tag-name="safe" data-tag-slug="safe"><a cla...
...category="" data-tag-id="42350" data-tag-name="solo" data-tag-slug="solo"><a cla...
我编码了tagName = r'.*data-tag-slug="(\w+)".*'
,使用了re.findall(tagName, html)
,但我只能得到一个结果,这是适合该模式的最后一项。我不知道如何才能得到所有这些。
P.S。 “最后一个项目”是指有几个适合该模式的标签,但是代码只能按html中的出现顺序获得最后一个。
答案 0 :(得分:1)
只需从正则表达式中删除贪婪的.*
:
import re
txt = """category="rating" data-tag-id="40482" data-tag-name="safe" data-tag-slug="safe">category="" data-tag-id="42350" data-tag-name="solo" data-tag-slug="solo">"""
out = re.findall(r'data-tag-slug="(\w+)"', txt)
print(out)
#> ['safe', 'solo']
由reprexpy package于2018-10-02创建
import reprexpy
print(reprexpy.SessionInfo())
#> Session info --------------------------------------------------------------------
#> Platform: Darwin-17.7.0-x86_64-i386-64bit (64-bit)
#> Python: 3.6
#> Date: 2018-10-02
#> Packages ------------------------------------------------------------------------
#> reprexpy==0.1.1