python正则表达式的辅助

时间:2016-04-14 07:01:08

标签: python regex python-3.x

我想测试一个文件,如果它与正则表达式有效。

file_string = >sp|Q1ABCD|003R_FRG3G(438aa)Uncharacterizedprotein1A.[virus1(isolateABCD)(AB-1)]MLFLGTIGLAVVVGGLMAYGYYYGHHDE2-9:ArpllGKT>sp|Q2DBAC|004R_FRG3G(60aa)Uncharacterizedprotein1B.[virus2(isolateBGF)(AB-2)]NAKYDTDQGVGRMLFLGTIGLAVVVGGLMAYGYYYDGKTPSSGTSFHTASPSFSSRYRY33-40:GyyydGKT50-100:GyyydGKT>sp....... 使用> sp ....我的意思是这样。

pattern = '^(>sp\\|[PQ].{5,7}\\|.+\\(\d+aa\\).*\\[.*\\][ACDEFGHIKLMNPQRSTVWY]*(\d+-\d+:.+)+)+$'
    import re
    ant = re.match(pattern,file_string)

但我使用的正则表达始终匹配。那不对。我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果第一个条目的第一部分和最后一个条目的最后一部分匹配,那么你提供的正则表达式就足够了。因为,正如Wiktor S指出的那样,.*部分 任何

尝试限制你的正则表达式

^(>sp\|[PQ].{5,7}\|(?:.(?!>sp))+?\(\d+aa\)(?:.(?!>sp))*?\[[^\]]*?\][ACDEFGHIKLMNPQRSTVWY]*(?:\d+-\d+:(?:(?!>sp).)+)+)+$

我在这里做了一些猜测(就像你真的没有需要来捕获每个条目的最终的,可能重复的部分),所以你可能需要稍微调整它。

See it in action at regex101

此致