0

私のスクリプト:

def fetch_online():
    pattern = re.search('(<span class="on">)(.*)(</span>)', data)
    return pattern.group(2)

print fetch_online()

の中dataに、次の行が 1 行あります。

        <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 に答える