Skip to main content
 首页 » 编程设计

python之如何检查给定的路径名是否与 Python 中给定的正则表达式匹配

2025年02月15日32pander-it

我正在尝试找出一种方法,将每个目录路径与给定的正则表达式进行比较,以确定它是否与该模式匹配。

我有以下路径列表

C:\Dir 
C:\Dir\data 
C:\Dir\data\file1 
C:\Dir\data\file2 
C:\Dir\data\match1\file1 
C:\Dir\data\match1\file2 

我只想打印那些匹配以下模式的路径 其中“*”可以替换零个或多个目录级别,match1 可以是文件名或目录名。

C:\Dir\*\match1 

我发现 re.match() 可以帮助我解决这个问题,但我很难弄清楚如何定义模式,而我想出的那个(粘贴在下面)不起作用根本。 item 将包含引号中的路径

re.match("((C:\\)(Dir)\\(.*)\\(match1))",item) 

有人可以帮我完成这个任务吗?

请您参考如下方法:

你可以去:

^C:\\Dir\\.+?match1.* 

参见 a demo on regex101.com .


在 Python 中,这将是:

import re 
 
rx = re.compile(r'C:\\Dir\\.+?match1.*') 
 
files = [r'C:\Dir', r'C:\Dir\data', r'C:\Dir\data\file1', r'C:\Dir\data\file2', r'C:\Dir\data\match1\file1', r'C:\Dir\data\match1\file2'] 
 
filtered = [match.group(0)  
            for file in files  
            for match in [rx.match(file)]  
            if match] 
 
print(filtered) 

或者,如果您喜欢 filter() 和 lambda():

filtered = list(filter(lambda x: rx.match(x), files))