我有一组文件名,如:
PATJVI_RNA_Tumor_8_3_63BJTAAXX.310_BUSTARD-2012-02-19.fq.gz
PATMIF_RNA_Tumor_CGTGAT_2_1_BC0NKBACXX.334_BUSTARD-2012-05-07.fq.gz
我希望有一个正则表达式(python中,仅供参考),可以捕获“216;”字符之间的每个组。但是,请注意,在第二个文件名中,存在一个组,而第一个文件名中不存在该组。当然,可以使用字符串拆分等,但我希望使用单个正则表达式。第一个文件名的regex类似于:
(\w+)_(\w+)_(\w+)_(\d)_(\d)_(\w+)\.(\d+)_(\S+)\.fq\.gz
第二个是:
(\w+)_(\w+)_(\w+)_(\w+)_(\d)_(\d)_(\w+)\.(\d+)_(\S+)\.fq\.gz
当可选组存在时,我希望regex组为空;当可选组存在时,我希望regex组包含可选组(这样我可以在以后用它来构造带有\4的新文件名)。你知道吗
要使组成为可选的,可以在所需组之后添加
?
。这样地: (\w+)?你知道吗但您的示例中有一个下划线,它也应该是可选的。要处理它,可以将它与可选组组合在一起。你知道吗
不过,这将为您的匹配结果添加一个新组。要避免这种情况,请使用不匹配的组:
最终结果如下:
相关问题 更多 >
编程相关推荐