0

我的脚本:

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>

4

2 回答 2

4

在你的具体情况下,得到了<span class="on">)(\d+)</span>. 在更一般的方法中,选择非贪婪:

<span class="on">(.*?)</span>
于 2012-05-26T14:11:01.143 回答
3

使用非贪婪量词:(<span class="on">)(.*?)(</span>).

要了解有关非贪婪量词的更多信息,请阅读 Regular-Expressions.info 上的“懒惰而不是贪婪”部分

只是重申评论中已经说过的话,非常不鼓励使用正则表达式解析 HTML

于 2012-05-26T14:09:02.450 回答