【问题标题】:Regex search For HTML Tag with UUID正则表达式搜索带有 UUID 的 HTML 标记
【发布时间】:2016-08-05 11:36:51
【问题描述】:

我正在尝试将单个 HTML 标记与作为 UUID 的 id 属性匹配。我使用外部资源对其进行了测试,以确保正则表达式对于相同的输入字符串是正确的。 UUID 是动态提取的,因此需要进行字符串替换。

我期望的输出是要打印的最后一行:

<tr class="ref_row" id="b9060ff1-015d-4089-a193-8fef57e7c2ef">

这是我试过的代码:

content = '<tbody><tr class="ref_row" id="b9060ff1-015d-4089-a193-8fef57e7c2ef"><td><b>01/08/2016 14:41:00</b></td>'
ref = 'b9060ff1-015d-4089-a193-8fef57e7c2ef'
regex = '<[^>]+?id=\"%s\"[^<]*?>' % ref
element_to_link = re.search(regex, content)
print element_to_link.string

打印时我得到的输出是整个输入字符串,这表明正则表达式不正确。这是怎么回事?

请不要建议我使用Beautiful Soup,使用正则表达式应该可以。

【问题讨论】:

  • “请不要建议我使用 Beautiful Soup,这应该可以通过正则表达式来实现” - 但是为什么要这样做? 使用正则表达式解析 HTML 是 notoriously 鲁莽,并且有很多工具可用于实际解析 HTML
  • 请不要回滚我的编辑;如果您有问题,请评论解释它。
  • 这是关于解析 html 的事实完全无关紧要,这可能与任何字符串有关,并且问题仍然存在。我想用正则表达式解决这个问题
  • “请阅读我的问题,我已经使用那个确切的网站来测试我的正则表达式” - 我已经完成了,你从来没有提到过。 “你为什么要对这个问题投反对票?” - 尽管你持敌对态度,但我还没有。 “如果您没有,请不要发表评论” - 这不是它的工作原理,澄清您的要求正是 cmets 的用途。如果您只想匹配,为什么不直接访问.group()?你从哪里得到你想要的想法.string
  • 您的 content 变量似乎是有效的 xml ,为什么不试试 xpath

标签: python regex


【解决方案1】:

为什么不使用分组方法?这对我有用:

element_to_link.group(0)

【讨论】:

    【解决方案2】:

    从 Python re 模块文档中,MatchObject.string 属性返回“传递给 match() 或 search() 的字符串。”。使用 MatchObject 的方法之一,例如 group()、groups() 或 groupdict()。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2010-09-13
      • 2016-01-18
      相关资源
      最近更新 更多