0

私には2つのほぼ同一の式があり、1つは良い出力を、もう1つは間違った出力を取得しています。

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>'

上記の例では、使用されている構文が同一であるにもかかわらず、いくつかのごみコードが出力されます。出力もタプルを含むリストですが、不要なコードでいっぱいです。

2番目の正規表現の何が問題になっているのかわかりますか?

4

1 に答える 1

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はこの理由だけで存在します。

于 2013-03-08T22:22:10.320 に答える