gpt4 book ai didi

python - 用于捕获仅有时出现的组的正则表达式

转载 作者:行者123 更新时间:2023-11-28 20:50:39 25 4
gpt4 key购买 nike

我有一组文件名,例如:

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 中,仅供引用)。但是,请注意,在第二个文件名中,存在一个在第一个文件名中不存在的组。当然,可以使用字符串拆分等,但我想用一个正则表达式来做到这一点。第一个文件名的正则表达式类似于:

(\w+)_(\w+)_(\w+)_(\d)_(\d)_(\w+)\.(\d+)_(\S+)\.fq\.gz

第二个是:

(\w+)_(\w+)_(\w+)_(\w+)_(\d)_(\d)_(\w+)\.(\d+)_(\S+)\.fq\.gz

我希望正则表达式组在可选组存在时为空,并在可选组存在时包含可选组(这样我以后可以用它来用\4 构造新文件名)。

最佳答案

要使组可选,您可以在所需组之后添加 ?。像这样: (\w+)?

但是你的例子有一个下划线,它也应该是可选的。为了处理它,你可以将它与可选组一起分组。

((\w+)_)?

但是,这会将一个新组添加到您的匹配结果中。为避免这种情况,请使用不匹配的组:

(?:(\w+)_)?

最终结果如下所示:

(\w+)_(\w+)_(\w+)_(?:(\w+)_)?(\d)_(\d)_(\w+)\.(\d+)_(\S+)\.fq\.gz

关于python - 用于捕获仅有时出现的组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com