2016-04-04 11 views
1

私は、htmlからstrに一致するようにpython reg expを使用することに問題があります。python reg exp match str

support= re.findall(r'<span id="cos_support-(\d)*">(\d)*</span>', unicodePage) 
print(support) 

ourputが

ある( '9'、 '6')( '7'、 '4')( '6'、 '3')( '5'、「4 ')(' 1 '、' 4 ')(' 5 '、' 3 ')。

私のメモ帳++では、strに一致するregを使用しています。出力はこれです

<span id="cos_support-3102208">314</span> 

私はこの結果を望んでいます。

答えて

1

正規表現検索は、丸括弧で囲まれたグループを返します。あなたのケースでは、あなたの正規表現で定義された2つのグループがあり、一致するたびにこれらの部分だけが返されます。

が完全一致を取得するには、このような丸括弧を使って正規表現全体を囲む必要があります。また

support= re.findall(r'(<span id="cos_support-(\d)*">(\d)*</span>)', unicodePage) 

、あなたは正規表現で非クリティカルエラーが発生しています。 (\d)*の代わりに(\d+)を使用する必要があります。これは、数値シーケンス全体が1桁ではなく一致するグループに含まれ、少なくとも1桁の数字が必要であるためです。だから、結果の式は次のようになります。

support = re.findall(r'(<span id="cos_support-(\d+)">(\d+)</span>)', unicodePage) 

を最後に、あなたが内部のグループをキャッチしたいとのみ完全な一致を必要としない場合は、それぞれの丸括弧を取り除くことができます。

support = re.findall(r'(<span id="cos_support-\d+">\d+</span>)', unicodePage) 
0

は、このパターンを試してみてください:

r'-(\d+).*?>(\d+)<'