在python中使用正则表达式剥离标签

时间:2017-10-15 14:31:04

标签: python regex web-scraping

如何从这个列表中删除标签:

['</span>A walk in the park<span class="html-tag"]

我设法使用(r'(?<=</span>)[^>]+')删除第一个标记,但无法弄清楚如何删除第二个标记。我知道正则表达式不是处理标签的方法,而只是想弄明白。

2 个答案:

答案 0 :(得分:0)

您可以使用:

(?:>)(.*)(?:<)

在正则表达式中,每个打开和关闭的圆形托架都定义了一个组。在这里,我们有3对圆括号,但第一个和最后一个在内部有一个?:。这意味着被定义的组是非捕获组,因此需要匹配模式,但解析器不会返回它。相反,你想要的是在组#1中。

答案 1 :(得分:0)

你的正则表达式非常接近。在lookbehind找到的位置之后,您只想阅读下一个<

(?<=</span>)[^<]+

regex101

上查看
$ cat test.py
import re
s='</span>A walk in the park<span class="html-tag"'
print re.findall(r'(?<=</span>)[^<]+', s)

$ python test.py
['A walk in the park']