2013-12-09 65 views
0

我試圖使用條件的正則表達式要麼<label><label title="test"...>有條件的正則表達式

我reqular表達式匹配匹配的HTML標記如下:

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

從我的理解,這意味着如果可選空間是匹配它應該跟隨一系列字符。沒有別的條件因此它應該只是>

按照蟒蛇CLI,我做了以下

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

所以我能夠匹配屬性的標籤,但我如何去匹配一個普通的標籤呢?非常感謝!

回答

4

您想要[^>]*匹配所有內容,直到您點擊>

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

你可以簡單地使用OR運算符(|):

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

的作品,但我希望的是更好的解決方案沉綿我想不出這個答案的時候了:) – Apples