我正在嘗試找到一個正則運算式,它可以讓我知道是否有一個二核苷酸(兩個字母)在我的序列中連續出現 2 次。我給你舉個例子:
假設我有這個序列(這個角色;是為了明確我在談論二核苷酸):
"AT;GC;TA;CC;AG;AG;CC;CA;TA;TA"
我期望的結果是它匹配模式AGAG和TATA.
我已經嘗試過了,但它失敗了,因為它給了我任何一對二核苷酸,而不是同一對:
([ATGC]{2}){2}
uj5u.com熱心網友回復:
您將需要使用反向參考。
從匹配一對開始:
[ATGC]{2}
將匹配四個字母中的任意兩個。
您需要將其放在捕獲括號中并使用 參考括號的內容\1,如下所示:
([ATGC]{2});\1
uj5u.com熱心網友回復:
假設字串是
"TA;TA;GC;TA;CC;AG;AG;CC;CA;TA;TA"
^^ ^^ ^^ ^^ ^^ ^^
如果您希望匹配"TA"兩次(和"AG"一次),您可以應用@Andy 的解決方案。
如果您"TA"只想匹配一次,無論"TA;TA"字串中有多少個實體,您都可以匹配
([ATGC]{2});\1(?!.*\1;\1)
并檢索捕獲組 1 的內容。
演示
運算式可以分解如下。
([ATGC]{2}) # match two characters, each from the character class,
# and save to capture group 1
;\1 # match ';' followed by the content of capture group 1
(?! # begin a negative lookahead
.* # match zero or more characters
\1;\1 # match the content of capture group 1 followed by ';'
# followed by the content of capture group 1
) # end negative lookahead
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420672.html
標籤:
