0

私は文字列を持っています:

 <a class="x3-large" href="_ylt=Ats3LonepB5YtO8vbPyjYAWbvZx4;_ylu=X3oDMTVlanQ4dDV1BGEDMTIwOTI4IG5ld3MgZGFkIHNob290cyBzb24gdARjY29kZQNwemJ1ZmNhaDUEY3BvcwMxBGVkAzEEZwNpZC0yNjcyMDgwBGludGwDdXMEaXRjAzAEbWNvZGUDcHpidWFsbGNhaDUEbXBvcwMxBHBrZ3QDMQRwa2d2AzI1BHBvcwMyBHNlYwN0ZC1mZWEEc2xrA3RpdGxlBHRlc3QDNzAxBHdvZQMxMjc1ODg0Nw--/SIG=12uht5d19/EXP=1348942343/**http%3A//news.yahoo.com/conn-man-kills-masked-teen-learns-son-063653076.html"  style="font-family: inherit;">Man kills masked teen, learns it&#39;s his son</a>

そして、私はそれの最後の部分、実際のメッセージだけを取得したいと思います:

Man kills masked teen, learns it&#39;s his son

これまでのところ、私は次のようなものを作成しました。

pattern = '''<a class="x3-large" (.*)">(.*)</a>'''

しかし、それは私が望むことをしません、最初(.*)はリンク内のすべてのがらくたに一致します、しかし2番目は私が取得したい実際のメッセージです

4

2 に答える 2

2

代わりに尋ねるべき質問に答えるという精神で;^)はい、HTMLを処理するにはBeautifulSoup [リンク]またはlxmlまたは実際のパーサーを使用する必要があります。例えば:

>>> s = '<a class="x3-large" href="_stuff--/SIG**morestuff" style="font-family: inherit;">Man learns not to give himself headaches using regex to deal with HTML</a>'
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(s)
>>> soup.get_text()
u'Man learns not to give himself headaches using regex to deal with HTML'

または、キャプチャするテキストが複数ある場合:

>>> s = '<a class="test" href="ignore1">First sentence</a><a class="test" href="ignore1">Second sentence</a>'
>>> soup = BeautifulSoup(s)
>>> soup.find_all("a")
[<a class="test" href="ignore1">First sentence</a>, <a class="test" href="ignore1">Second sentence</a>]
>>> [a.get_text() for a in soup.find_all("a")]
[u'First sentence', u'Second sentence']

または、次の特定の値のみが必要な場合class

>>> s = '<a class="test" href="ignore1">First sentence</a><a class="x3-large" href="ignore1">Second sentence</a>'
>>> soup = BeautifulSoup(s)
>>> soup.find_all("a", {"class": "x3-large"})
[<a class="x3-large" href="ignore1">Second sentence</a>]
于 2012-09-28T19:02:25.393 に答える
1

([^"]*)最初(.*)の代わりに、2番目の代わりに入力し([^<]*)ます。または、のような貪欲でない数量詞を使用します(.*?)

于 2012-09-28T18:58:55.370 に答える