1

を使用して一致させようとしているパターンがありますre.compile。ただし、スクリプトで目的の結果が得られません。以下は、スクレイピングしたい HTML コードの例です。以下の HTML から 2 つのリスト項目を作成したいと考えています。

また、以下は2つのリスト項目を選択する私の試みです:

import re

def getData():  

    trans_array = "" ##HTML data here
    pattern2 = re.compile('<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*)</table>')

    print re.findall(pattern2, trans_array)

getData()

私の感じでは、使用したコードは機能するはずですが、機能していません。アドバイスやコメントをいただければ幸いです。

4

2 に答える 2

1

特に指定しない限り、.in Regex は改行と一致しません。ただし、これを修正するために使用する代わりにflags=re.S、よりクリーンな解決策は、正規表現構文自体を使用することだと思います。

re.compile('(?s)<table width="100%" border="0" class="tbl t3 mobile-collapse">(.*?)</table>')

(?s)と同じことをしflags=re.Sます。

また、一致を最大化するために、一致を貪欲にしないようにしたいと思います。それは(.*?)代わりに使用することによって行われます(.*)

于 2013-07-30T14:08:30.803 に答える