python - 如何编写正则表达式以匹配多个文件路径

标签 python regex

我想匹配位于多个目录中的文件:

文件路径可以在本地 - C:/users/path/image.png 或在系统上 -//home/user/web/image.png

对于第一种情况,我有正则表达式 -

[c|C]:[^.]+[.][A-Za-z]{3}

如何使用一个正则表达式来匹配这两种情况?

最佳答案

你想从比赛中得到什么并不清楚 - 也许你只想要完整的字符串?

((?:(?:[cC]:)|//home)[^\.]+\.[A-Za-z]{3})

一个点 (.) 将匹配(接近)所有内容。如果您想与字符串 . 进行比较和对比,您应该使用 \. 将其转义。

测试运行:

>>> print re.match("((?:(?:[cC]:)|//home)[^\.]+\.[A-Za-z]{3})", "//home/user/web/image.png").groups()
('//home/user/web/image.png',)

>>> print re.match("((?:(?:[cC]:)|//home)[^\.]+\.[A-Za-z]{3})", "C:/users/path/image.png").groups()
('C:/users/path/image.png',)

还有一个用于通常的 Windows 路径语法:

>>> print re.match("((?:(?:[cC]:)|//home)[^\.]+\.[A-Za-z]{3})", "C:\users\path\image.png").groups()
('C:\\users\\path\\image.png',)

如果需要支持 .jpeg,将扩展名的最大允许出现次数从 {3} 增加到 {3,4}.

关于python - 如何编写正则表达式以匹配多个文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387009/

相关文章:

python - numpy中两个 float 之间以对数间隔的数字

python - 使用 NumPy 和 OpenCV 高效旋转图像并粘贴到更大的图像中

python - 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

python - 为什么 urllib 不适用于本地网站?

ruby - 与 ruby​​ 的多行匹配

python - while 循环中是否需要 continue 语句?

python - Api 引发 ValueError 时的 http 状态代码是什么?

regex - Matlab:正则表达式替换

java正则表达式搜索和替换模块

Javascript 匹配函数