<dt class="col2">
<p>Rs. 2691.00 </p>
</dt>
从上面的html代码中,我需要使用正则表达式提取价格。我使用beautifulSoup进行解析。
任何人都可以提出上述正则表达式吗?
答案 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