正则表达式相同的模式仅适用于1个结果

时间:2018-10-03 01:13:25

标签: python regex

我想使用正则表达式在网页中找到多个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中的出现顺序获得最后一个。

1 个答案:

答案 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