【问题标题】:Regex to extract file paths except urls正则表达式提取除 url 之外的文件路径
【发布时间】:2017-09-18 09:28:19
【问题描述】:

我有一个包含一些文件路径的大文本,我需要一个可以帮助我提取所有路径的正则表达式。目前我正在使用这个:

\/.+?\/[\w]+\.\w+

它几乎可以完美运行,但包含文件名或末尾的点的链接也被解释为路径,如下所示:

http://example.com/index.html

非常感谢帮助提供有效的正则表达式。此外,如果您可以在此正则表达式中添加对路径中空格的支持,那就太棒了。提前致谢!

正则表达式测试链接:click

【问题讨论】:

  • @WiktorStribiżew 这个不能正常工作
  • @WiktorStribiżew 好吧,结果与使用我提供的正则表达式时相同。 “//example.com/index.html”已提取,但不应

标签: python regex


【解决方案1】:

您可以尝试否定的后视来排除“http:”和“https:”前缀。

(?<!https:)(?<!http:)(?<!/)(?<!\w)((/[^\s]+)?/\w+\.\w+)

如果您在 pythex 中使用此测试字符串进行尝试:

/abc/def/def.ps
/abc/def/ttt/def.ps
/test.txt
/abc/test.txt http://example.com/index.html
 http://www.google.com/bla/test/index.html https://www.google.com/bla/test/index.html

它只会匹配前 4 个。

这是pythex 链接。

这个正则表达式的优点是不依赖行首来工作。

您可以添加任意数量的look behinds,以支持其他协议,例如 ftp 等。

【讨论】:

  • 对这种方法有任何 cmet 吗?
  • 谢谢,它几乎可以完美运行,除了 http/https 支持
  • 刚刚添加了对 https 的支持。您可以添加更多的外观以支持其他协议。请检查更新后的答案,让我知道您对此的看法。
【解决方案2】:

试试这个:^\/.+?\/[\w]+\.\w+$ 启用多行模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多