【发布时间】:2012-09-28 18:56:14
【问题描述】:
我有一个字符串:
<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's his son</a>
我只想得到它的最后一部分,即实际消息:
Man kills masked teen, learns it's his son
到目前为止,我做了这样的事情:
pattern = '''<a class="x3-large" (.*)">(.*)</a>'''
但它没有做我想要的,第一个 (.*) 匹配链接内的所有废话,但第二个是我想要得到的实际消息
【问题讨论】:
-
将第一个
(.*)更改为(.*?),然后只需执行MatchObject.groups(1)。您可能想重新阅读 python re 文档。 -
你也可以只做
s.split('>',1)[1][:-4]- 尽量不要使用正则表达式来解析HTML。 -
如果您只想要字符串的最后一部分而不是为什么在第一个
.*周围使用brackets。在正则表达式中,()用于捕获您想要的字符串。因此,如果您只想提取最后一部分,请尝试pattern = '''<a class="x3-large" .*">(.*)</a>'''。另请阅读greedy and non-greedy正则表达式量词。