我正在尝试使用条件正则表达式匹配<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
所以我能够将标签与属性匹配,但我如何才能匹配普通标签呢?非常感谢!
答案 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