【问题标题】:Unable to accurately search a particular text in a html tag using Python无法使用 Python 准确搜索 html 标记中的特定文本
【发布时间】:2019-03-01 14:36:21
【问题描述】:

我有下面的正则表达式来识别 html 标记中的文本,它不会产生预期的结果。

HTML 标签:

<td>Issue Amount</td>
<td>:</td>
<td>20,000,000.00</td>

Find = re.findall(?<=Issue Amount</td> <td>:</td> <td>) [0-9,]),soup_string)[0]

我需要从这个标签中获取数值 20,000,000.00。

任何建议我在这里做错了什么。我确实尝试了其他几种方法,但都没有成功。

【问题讨论】:

  • 听起来好像有答案 herehere
  • 试试这个正则表达式 ([\d,.]+) [\d,.]+ :任何数字或逗号或点 () 的一次或多次:捕获组
  • 感谢 nissim.. 它可以工作,但这只是 html 正文的一部分,它也有可能最终匹配其他值。在整个正文中,正则表达式应该只匹配这部分。

标签: regex python-3.x regex-lookarounds


【解决方案1】:

在任何情况下都不要尝试使用正则表达式解析 XML,除非您希望调用 rite 666Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn。

使用 HTML 解析库,请参阅 this page 了解一些方法。

但是,在您的情况下,您通过在 &lt;/td&gt;&lt;td&gt; 标记之间查找空格来弄乱您的正则表达式。而您的数据有回车。您可以使用\s 元字符来查找任何空白字符

【讨论】:

    【解决方案2】:

    下面是帮助我获得所需输出的正则表达式。感谢大家的投入。

    (?<=Issue Amount[td\W]{21})([\d,.]+)
    

    【讨论】:

    • 您仍然应该使用适当的 HTML 解析器来解析 HTML。
    • 当然@brunodesthuilliers... :)
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2018-11-28
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多