python中正则表达式中的重复次数

时间:2014-04-04 16:30:01

标签: python regex

说我有以下正则表达式:

"GGAGG.{5,13}?(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)"

有没有办法看到该部件正在进行多少次重复。{5,13}? 想知道GGAGG和起始密码子之间有多远。我可以稍后手动搜索它,但想知道原始正则表达式中是否有更好的方法。

2 个答案:

答案 0 :(得分:2)

你可以做到

"GGAGG(.{5,13}?)(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)"

然后使用像

这样的代码
rem = re.match(pat, s)
dist_between_ggagg_and_start_codon = len(rem.group(1))

答案 1 :(得分:0)

您可以使用match.start方法获取整个比赛或组的位置。使用该信息:

>>> import re
>>> seq = 'xxxxGGAGGxxxxxxxATGxxxTGA'
>>> pattern = "GGAGG.{5,13}?(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)"
>>> match = re.search(pattern, seq)
>>> match.start(1) - match.start() - 5 # 5 = len(GGAGG)
7