【问题标题】:Match .htm or .html extensions with python RE将 .htm 或 .html 扩展名与 python RE 匹配
【发布时间】:2016-01-06 20:55:46
【问题描述】:

如标题所述,我需要在 Python 中匹配一个 .htm.html 文件扩展名。 我尝试使用标准库中的 RE 模块,但找不到正确的模式。 我测试了几种模式,看起来更正确(对我来说)但没有奏效的模式如下:

re.search("\.(htm|html)",file)
re.search("\.htm(l)",file)
re.search("\.htm(l?)",file)
re.search("\.htm(l*?)",file)
re.search("\.htm(l+?)",file)

和其他变体,但没有一个有效。 问题是,这些模式识别文件扩展名,如 .html 或类似的,我不想要它们(只有 htm 和 html)。

有人可以帮我找到正确的模式吗? 谢谢大家

【问题讨论】:

  • 您需要匹配 url 或本地文件上的文件扩展名?
  • @Pedro 他们在我的电脑上。
  • 您只需要检查文件扩展名是否匹配或者您需要捕获匹配项?

标签: python html regex file expression


【解决方案1】:

在这种情况下不需要正则表达式,请改用endswith(),即:

if filePath.lower().endswith(('.html', '.htm')):

【讨论】:

    【解决方案2】:

    您只需要re.search('\.html?$', file)。括号用于创建捕获组,您不想在此处执行此操作。

    我还会提到一个更复杂的替代解决方案,因为您似乎正在尝试做这样的事情:re.search('\.(?:(?:html)|(?:htm))$', file)。这将完成与上面的 RegEx 相同的事情,但更长更复杂。

    最后,如果你还想获取文件名,那就re.search('^.*?\.html?$', file)吧。

    【讨论】:

    • 如果文件名是 test.htmlimage.jpg ?最好将 $ 放在正则表达式末尾。
    • @pzp 无法正常工作。例如,它也匹配 .htmk 文件。
    • @PedroLobito 很好。现已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多