使用条件正则表达式匹配html标记

时间:2013-12-09 04:28:23

标签: python regex

我正在尝试使用条件正则表达式匹配<label><label title="test"...>

我的reqular表达式如下:

<label(\s?)(?(1)\w+)>

根据我的理解,这意味着如果可选空间匹配,则应该跟随一系列字符。没有其他条件因此它应该跟随>

在python CLI中,我执行以下操作

re.search('<label(\s?)(?(1)\w+)>','<label>') # fails, no match
re.search('<label(\s?)(?(1)\w+)>','<label title=>') # matches

所以我能够将标签与属性匹配,但我如何才能匹配普通标签呢?非常感谢!

2 个答案:

答案 0 :(得分:4)

您希望[^>]*匹配所有内容,直到您点击>

re.search('<label([^>]*)>','<label title=>') # matches
re.search('<label([^>]*)>','<label>') # matches

答案 1 :(得分:1)

您可以简单地使用OR运算符(|):

re.search('<label(\s?)(?(1)\w+)>|<label>','<label>') # matches
re.search('<label(\s?)(?(1)\w+)>|<label>','<label title=>') # matches