正则表达式匹配文件路径

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 正则表达式匹配文件路径 博客 51CTO博客

2023-07-19 18:24:32 184浏览

正则表达式匹配文件路径,python中匹配文件路径的正则表达式

需求

输入一个路径,用正则表达式来匹配,匹配成功就会打开文件的母路径

比如:

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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695