我无法找到与我的文件名匹配的全局模式。问题是文件名偶尔会有前缀。
它应该匹配的文件:
1_S1_L001_R1_001.fastq.gz
230101_N_N_100_100_1_S1_L001_R1_001.fastq.gz
不应匹配的文件:
11_S11_L001_R1_001.fastq.gz
230101_N_N_100_100_11_S11_L001_R1_001.fastq.gz
这个在在线测试器中工作,但在Python中不起作用:
+(*([!0-9])|*[!0-9])1_S*
。
您可以尝试以下 glob 模式:
*_S[0-9][!0-9]*
在 Python 上验证:
import fnmatch
fnames = [
'1_S1_L001_R1_001.fastq.gz',
'230101_N_N_100_100_1_S1_L001_R1_001.fastq.gz',
'11_S11_L001_R1_001.fastq.gz',
'230101_N_N_100_100_11_S11_L001_R1_001.fastq.gz',
]
for fname in fnames:
print(fname, fnmatch.fnmatch(fname, '*_S[0-9][!0-9]*'))
输出
1_S1_L001_R1_001.fastq.gz True
230101_N_N_100_100_1_S1_L001_R1_001.fastq.gz True
11_S11_L001_R1_001.fastq.gz False
230101_N_N_100_100_11_S11_L001_R1_001.fastq.gz False