我正在尝试找出一种方法,将每个目录路径与给定的正则表达式进行比较,以确定它是否与该模式匹配。
我有以下路径列表
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.*
在
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))
关于python - 如何检查给定的路径名是否与 Python 中给定的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209009/