我有两个几乎相同的表达方式,我得到一个好的,另一个错误的输出。
data/holidays/photos-2012-2013/word-another-more-more-5443/"><span class="bold">word another</span> - word</a>
regex = 'data/holidays/photos-2012-2013/.+?(\d{4})/"><span class="bold">(.+?)</span>(.+?)</a>'
word-another-more-more
,word another
和word
,这些都在上述变化中。
以上打印正确,这样的元组列表:
('6642', 'word another', ' - word')
data/holidays/photos-2012-2013/word-another-more-more-5443/">word- another - <span class="bold">word another</span></a>
regex1 = 'data/holidays/photos-2012-2013/.+?(\d{4})/">(.+?)<span class="bold">(.+?)</span></a>'
以上打印出一些垃圾代码,尽管使用的语法是完美的。输出也是一个包含元组的列表,但是有很多不需要的代码。
你能看出第二个正则表达式有什么问题吗?
答案 0 :(得分:1)
适合我:
>>> import re
>>> text = 'data/holidays/photos-2012-2013/word-another-more-more-5443/">word- another - <span class="bold">word another</span></a>'
>>> re.findall(r'data/holidays/photos-2012-2013/.+?(\d{4})/">(.+?)<span class="bold">(.+?)</span></a>', text)
[('5443', 'word- another - ', 'word another')]
注意:请不要使用正则表达式解析HTML。 BeautifulSoup因此而存在。