【问题标题】:Regular expression to match any folder path of any length on Windows and Unix在 Windows 和 Unix 上匹配任意长度的任意文件夹路径的正则表达式
【发布时间】:2020-05-31 21:21:39
【问题描述】:

是否可以在 Windows 和 Unix 上创建匹配任意长度文件夹路径的正则表达式? 因此,例如,正则表达式应该匹配:C:Users/Hp Workstation,以及:C:Users/User1/DownloadsC:Users/Desktop/Python/python-2.7.7-docs,甚至更长的路径...... 这只是一个例子。我的意思是某种通用正则表达式绝对匹配任何路径(任何分区,任何文件夹,任何子文件夹......) 我想用 Python 来做。 提前致谢!

答案之一: 这是我想到的可能解决方案之一,适用于大多数编程语言中的绝大多数不同路径。

^([a-zA-Z]?\:?[^\/\\:*?"<>|]*|[\/\\]{1,2}[^\/\\:*?"<>|]+[\/\\][^\/\\:*?"<>|]+)([\/\\][^\/\\:*?"<>|]+)+

【问题讨论】:

  • 这会起作用,但是如果您正在寻找、查找和存储文件路径,可能有更好的方法可以做到这一点。 regex101.com/r/dqaHcv/1
  • 非常感谢您的回答和努力!但我的意思是某种通用正则表达式绝对匹配任何路径(任何分区、任何文件夹、任何子文件夹......)。这只是一个例子。

标签: python regex directory path


【解决方案1】:

你可以试试这个,这匹配本地和网络路径。

^(C:[\S\s]+|\\[\S\s]+)^(C:.*|\\.*)

例子

a = 'C:Users/Hp Workstation'
b = 'C:Users/User1/Downloads'
c = 'Users/Desktop/Python/python-2.7.7-docs'
d = '\\lol.com\Dfsdd\Dfsrerere\ytererwe\9jungnjfl\Projects'
e = 'lol.com\Dfsdd\Dfsrerere\ytererwe\9jungnjfl\Projects'
lis=[a,b,c,d,e]
for item in lis:
    print(re.findall(r'^(C:[\S\s]+|\\[\S\s]+)', item ))

输出

['C:Users/Hp Workstation']
['C:Users/User1/Downloads']
[]
['\\lol.com\\Dfsdd\\Dfsrerere\\ytererwe\\9jungnjfl\\Projects']
[]

【讨论】:

  • 有效!也许不是在所有情况下,但它绝对是进一步升级的良好基础!对于不同的分区,您应该使用:^([A-Z]:[\S\s]+|\\[\S\s]+)。非常感谢您的回答和努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 2020-12-01
  • 2013-02-02
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多