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")
添加回答
舉報