我想匹配位于多个目录中的文件:
文件路径可以在本地 - 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/