正则表达式匹配文件路径
标签: 正则表达式匹配文件路径 博客 51CTO博客
2023-07-19 18:24:32 184浏览
需求
输入一个路径,用正则表达式来匹配,匹配成功就会打开文件的母路径
比如:
G:\QQ_FileRecv\MobileFile\base.apk
匹配成功将会打开 G:\QQ_FileRecv\MobileFile
实现
用python来写:
# 打开输出文件路径
def openPath():
print('openPath')
pattern = r'^[a-zA-Z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$'
# 使用正则表达式匹配路径
match = re.match(pattern, output_file.get())
if match:
print('you are opening a path')
filePath = os.path.dirname(output_file.get())
os.startfile(filePath)
else:
print('路径不匹配')
遇到问题
由于我的文件路径是拼接来的,在路径中存在"/" 这个特殊符号,这个时候正则表达式就不会匹配成功。
比如我输入:
G:\QQ_FileRecv\MobileFile/base.apk
会匹配失败,提示“路径不匹配”
问题分析
对于给定的文件路径G:\QQ_FileRecv\MobileFile/base.apk
,正则表达式匹配失败的原因是因为正则表达式中的\
字符需要进行转义。
在正则表达式中,\
是一个特殊字符,用于表示转义序列。如果你想匹配\
字符本身,需要使用双反斜杠\\
来表示。
下面是修正后的代码示例,可以正确匹配给定的文件路径:
def openPath():
print('openPath')
pattern = r'^[a-zA-Z]:[/\\](?:[^\\/:*?"<>|\r\n]+[/\\])*[^\\/:*?"<>|\r\n]*$'
# 使用正则表达式匹配路径
match = re.match(pattern, output_file.get())
if match:
print('you are opening a path')
filePath = os.path.dirname(output_file.get())
os.startfile(filePath)
else:
print('路径不匹配')
在这个修正后的代码中,我们使用正则表达式
r'^[a-zA-Z]:[/\\](?:[^\\/:*?"<>|\r\n]+[/\\])*[^\\/:*?"<>|\r\n]*$'
来匹配文件路径。这个正则表达式可以匹配Windows和Unix/Linux系统下的文件路径
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论