Python 查找包含点和一个接一个点的变化字符串的模式文件

Python 查找包含点和一个接一个点的变化字符串的模式文件,python,regex,file-handling,Python,Regex,File Handling,我想在HGG的子文件夹中搜索文件VSD.Br.XX.O.MR_T1.[一些不同的数字].。例如,在HGG的子文件夹中搜索VSD.Br.XX.O.MR_T1.25987.mha。我可以简单地使用VSD.Br.XX.O.MR_T1.,但问题是有像VSD.Br.XX.O.MR_T1c这样的文件。[一些不同的数字].我不想扫描它。简而言之,我希望整个字符串(包括点(.))在T1之后,然后在该字符串上应用通配符*。下面是代码。我尝试使用\转义点,但没有成功匹配项仍然为空 import fnmatch im

我想在HGG的子文件夹中搜索文件
VSD.Br.XX.O.MR_T1.[一些不同的数字].
。例如,在HGG的子文件夹中搜索
VSD.Br.XX.O.MR_T1.25987.mha
。我可以简单地使用
VSD.Br.XX.O.MR_T1.
,但问题是有像
VSD.Br.XX.O.MR_T1c这样的文件。[一些不同的数字].
我不想扫描它。简而言之,我希望整个字符串(包括点(.))在T1之后,然后在该字符串上应用通配符
*
。下面是代码。我尝试使用
\
转义点,但没有成功
匹配项
仍然为空

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
    for filename in fnmatch.filter(filenames, 'VSD.Br.XX.O.MR_T1\\..*'):
        matches.append(os.path.join(root, filename))

这有点棘手。为了找到格式为
VSD.Br.XX.O.MR_T1c.[某个可变数字].*
的所有文件,需要包含倒数第二个点,然后是某个可变字符串,然后是保存文件的所有扩展名,我们需要使用注释中指出的正则表达式

直接使用VSD.Br.XX.O.MR_T1.*获取了其他文件。下面是显示相同内容的屏幕截图

下面的解决方案对我有效

import os
import re

matches = []

for root, dirnames, filenames in os.walk('/home/ms/Desktop/Testing/HGG_LGG/'):
    for filename in [f for f in filenames if re.match('VSD.Brain.XX.O.MR_T1\\..*', f)]:
        matches.append(os.path.join(root, filename))

感谢您在评论中指出

尝试使用re模块。
对于[f中的文件名,如果re.match(r'VSD.Br.XX.O.MR_T1\\\..*,filenames)]
文件名是一个列表。因此使用re.match会引发类型错误。现在检查。我的意思是。
re.match(r'VSD.Br.XX.O.MR_T1\\..*,f)
fnmatch()
不会进行正则表达式匹配,它的通配符使用有限。