从html标签中提取价格

时间:2013-07-31 12:47:11

标签: python regex beautifulsoup

<dt class="col2">
<p>Rs. 2691.00 </p>
</dt>

从上面的html代码中,我需要使用正则表达式提取价格。我使用beautifulSoup进行解析。

任何人都可以提出上述正则表达式吗?

1 个答案:

答案 0 :(得分:2)

如果您想获得“2691.00”,请使用:

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

大多数正则表达式引擎都无法在后台执行*,因此如果有超过1个空间我将它留在主组中,以使其动态不会失败。您可以使用主匹配并修剪多余的空格或使用捕获组1。

(?<= )是一个积极的看法。这告诉正则表达式引擎必须在主匹配组之前匹配其中的任何内容,但不要在匹配中包含它。

Rs\.匹配“Rs。”。在正则表达式中。字符匹配任何东西,所以你必须逃避它以使它只匹配一个句号。

\s匹配空格。

*匹配0和无穷大。

\d匹配数字。

+匹配1和无穷大。类似于*但必须找到至少1才能成功匹配。

{2}意味着它必须找到2之前的任何东西。因此\d{2}\d\d相同。

我在价格匹配周围有括号来创建一个组。这允许您从整个匹配中提取该组。如果您想仅提取“美元”金额或仅提取更改,则可以进一步使用:

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

然后......我的订单可能有错...捕获组1包含2691.00,捕获组2包含2691,捕获组3包含00