3 回答
TA贡献1851条经验 获得超3个赞
您可以使用以下正则表达式的第一个匹配项:
r'((?:AGA)+)(?!.*\1)'
Python 代码 < ¯\ (ツ) /¯ > 启动你的引擎!
Python 的正则表达式引擎执行以下操作。
( : begin capture group 1
(?:AGA) : match 'AGA' in a non-capture group
+ : execute non-capture group 1+ times
) : end capture group 1
(?! : begin negative lookahead
.* : match any character other than line terminators 0+ times
\1 : match contents of capture group 1
) : end negative lookahead
"AGA"如果字符串中的另一个字符串"AGA"'s 至少与候选字符串一样长,则这将拒绝候选字符串's。
很可能有多个匹配项。例如,如果字符串是
AGAAGAAGATAGATAGAAGATAGA
^^^^^^^^^ ^^^^^^ ^^^
正如我在派对帽子上所指出的那样,将会有三场比赛。由于匹配项的长度始终从左到右不递减,因此任何匹配项都不会比第一个匹配项长。因此,我们可能会选择第一个匹配项。
如果想要识别所有最长的匹配项(应该有多个具有最长长度的匹配项),可以使用上面的正则表达式来获得一个匹配项,比方说,四个'ABA‘s,然后将字符串与正则表达式匹配r'(?:ABA){4}'。
TA贡献1946条经验 获得超3个赞
这是另一种查找匹配子序列的方法。
re.findall("(?:AGA)+", "AATGAGAAGAAGATCCTAGAAGAAGAAGAAGACGAT")
添加回答
举报