【问题标题】:Regular expression selecting a text with skipping a few lines正则表达式选择跳过几行的文本
【发布时间】:2017-05-18 05:58:10
【问题描述】:

我需要帮助选择 html 代码的价格。由于我已经提取了电影的标题,我现在需要提取价格。我曾尝试使用前瞻正则表达式,但是当我使用 \n.* 时出现错误,因为它说 “后瞻内的量词使其宽度不固定”。我需要文本中的第一个和第二个价格。

我尝试过的正则表达式:

(?<=Hello<\/a>.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*?(\$)

和:

Hello<\/a>.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*?(\$)

但不起作用。

文字:

<a class="blue_link" href="http://www.ebgames.com.au/Games/sjbeiub108723">Hello:</a>
    <div class="hi">
        <p>Including <a class="blue_link"> 
<p>Price$<data1>40.00</p>

请帮忙,谢谢:)

【问题讨论】:

  • 是你的预期输出 - $30.53 and $27.46
  • 如果要解析 HTML,请使用 HTML 解析器。 RegEx 不是 HTML 解析器,不应用于解析 HTML。请参阅stackoverflow.com/questions/1732348/… 了解更多信息。

标签: python html regex


【解决方案1】:

您可以将此正则表达式与 DOTALL 标志一起使用:

import re

r = "The Durrells: Series 2.+\$(\d+\.\d+).+\$(\d+\.\d+)"

text = ''' <a class="blue_link fn url" href="http://www.fishpond.com.au/Movies/Durrells-Series-2-Keeley-Hawes/5014138609450">The Durrells: Series 2</a>
    <div class="by">
        <p>Starring <a class="blue_link" href="http://www.fishpond.com.au/c/Movies/s/Keeley+Hawes">Keeley Hawes</a>, <a class="blue_link" href="http://www.fishpond.com.au/c/Movies/s/Milo+Parker">Milo Parker</a>, <a class="blue_link" href="http://www.fishpond.com.au/c/Movies/s/Josh+O%27Connor">Josh O'Connor</a>, <a class="blue_link" href="http://www.fishpond.com.au/c/Movies/s/Daisy+Waterstone">Daisy Wat...</a></p>
        <div class="productSearch-metainfo">
DVD (UK), May 2017        </div>
    </div>
</div></td>
                    <td align="right" style="vertical-align:top;"><div class="productSearch-price-container">
<span class="rrp-label">Elsewhere</span>&nbsp;<s>$30.53</s>&nbsp;&nbsp;<span class="productSpecialPrice"><b>$27.46</b></span>&nbsp;<div style="white-space:nowrap;">&nbsp; &nbsp;<span class="you_save">Save 10%</span>&nbsp;</div><span class="free-shipping">with Free Shipping!</span></div>
'''

print(re.findall(r, text, re.DOTALL))

输出:

[('30.53', '27.46')]

【讨论】:

  • 感谢您的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多