我正试图使用Python解析文件中的url和文件路径。我已经有一个url正则表达式。
问题
我需要一个从字符串中提取文件路径的正则表达式模式。要求:
- 独占的(不包括urls)
- 与操作系统无关,即支持Windows和UNIX样式的路径,例如:
C:\
,\\
,/
) - 所有类型的路径,即绝对路径和相对路径,例如:
/
,../
)
请通过修改下面的尝试或建议一个更好的正则表达式模式来帮助我。
尝试
以下是我目前拥有的正则表达式:
(?:[A-Z]:|\\|(?:\.{1,2}[\/\\])+)[\w+\\\s_\(\)\/]+(?:\.\w+)*
描述
(?:[A-Z]:|\\|(?:\.{1,2}[\/\\])+)
: 匹配前面的任何驱动器号、反斜杠或点路径[\w+\\\s_\(\)\/]+
: 匹配任何类似路径的字符-字母数字、斜线、括号、下划线等(?:\.\w+)*
: 可选扩展名
结果
注意: 我已经用Python和re
模块确认了这些结果。
期望
该正则表达式满足我的大部分要求,即排除URL并提取大多数文件路径。但是,我希望匹配所有路径(包括以单个斜杠开头的UNIX样式路径,例如/foo/bar.txt
),而不匹配URL。
研究
我没有找到通用解决方案。大多数工作往往满足特定情况。
SO 帖子
外部网站
command.com
实际上是一个文件名和一个互联网主机。 - melpomene'\0' not in filename and filename[-1] != '/'
。唯一的限制是文件名不能包含\0
,文件名中不能包含/
(显然其绝对路径将包含/
)。 (我可能会补充说,使用普通API,您实际上无法在文件名的名称部分中包含/
,除非将其放置在名称的末尾...在其他位置,它将被解释为路径中的分隔符)。 - Bakuriu