我的剧本:
def fetch_online():
pattern = re.search('(<span class="on">)(.*)(</span>)', data)
return pattern.group(2)
print fetch_online()
在data
内,有一行包含此内容:
<b><span><span class="on">5879</span> users online</span></b>
但是,在运行时,输出为:
5879</span> users online
我该如何解决这个问题,以便它只在第一个</span>
之前抓取数据?
答案 0 :(得分:4)
在您的具体案例中,获得了<span class="on">)(\d+)</span>
。在更一般的方法中,选择非贪婪:
<span class="on">(.*?)</span>
答案 1 :(得分:3)
使用非贪婪量词:(<span class="on">)(.*?)(</span>)
。
要了解有关非贪婪量词的更多信息,请阅读Regular-Expressions.info处的“懒惰而非贪婪”部分。
重申评论中已经说过的内容parsing HTML using regular expressions is highly discouraged。