2013-07-31 146 views
-8
<dt class="col2"> 
<p>Rs. 2691.00 </p> 
</dt> 

從上面的html代碼,我需要使用正則表達式提取價格。我用beautifulSoup進行解析。html標籤提取價格

任何人都可以爲上述提出正則表達式嗎?

+1

那麼使用'beautifulSoup'有什麼問題? –

+1

只是爲了讓事情變得更加美好和閃亮乾淨 - 您是否試圖從* HTML *中提取價格,或者,您是否試圖從'Rs中提取價格。 2691.00'字符串,你從某個HTML解析器獲得了文本數據?因爲,你可能應該知道:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

回答

2

如果你想獲得「2691.00」,然後使用:

(?<=Rs\.)\s*(\d+\.\d{2}) 

大多數正則表達式引擎不能做*在回顧後,所以使它足夠的動態,如果有更多的沒有失敗我把它留在主要組中的空間超過1個。您可以使用主要匹配並修剪掉多餘的空間或使用捕獲組1. 1

(?<=)是一種積極的後視。這告訴正則表達式引擎,在主要匹配組之前,必須匹配那裏面的任何東西,但不要將它包含在匹配中。

Rs\.符合「Rs」。在正則表達式a。角色匹配任何東西,所以你必須轉義它才能讓它只匹配一段時間。

\s可以匹配空格。

*匹配0和無窮大。

\d匹配數字。

+匹配1和無窮大。與*類似,但必須找到至少1個才能成功匹配。

{2}意味着它必須找到2之前的任何東西。所以\d{2}\d\d相同。

而且我在圍繞價格匹配創建組時使用括號。這使您可以從整個比賽中提取該組。如果要提取只是「美元」量或只是改變與這可以進一步用於:

((\d+)\.(\d{2})) 

然後...我可能有這樣的順序錯了...捕獲組1將包含2691.00,捕獲組2將包含2691,並且捕獲組3將包含00