[英]python regex for finding all matches
我有一個序列
seq = 'CCGATGACCTCACAGCCGCCTCCTGCCTTGAGGAAAGGAACTGCAATTCC'
我嘗試獲取長度為23bp的序列,以NGG結尾,其中N = A或C或T或G`
我用p = re.compile('([ACGT]{21}GG)')
for m in p.finditer(seq):
print m.group()
我只得到CACAGCCGCCTCCTGCCTTGAGG
。
但顯然CCGCCTCCTGCCTTGAGGAAAGG
也匹配。 為什么不報告?
將您的正則表達式放入先行斷言中,以進行重疊匹配。 您的正則表達式無法匹配兩個字符串,因為一個匹配項包含另一個匹配項。 默認情況下,正則表達式不會進行重疊匹配。 您需要按順序將樣式放在環顧四周,以捕獲重疊的匹配項。
(?=([ACGT]{21}GG))
碼:
>>> seq = 'CCGATGACCTCACAGCCGCCTCCTGCCTTGAGGAAAGGAACTGCAATTCC'
>>> p = re.compile(r'(?=([ACGT]{21}GG))')
>>> for m in p.finditer(seq):
print m.group(1)
CACAGCCGCCTCCTGCCTTGAGG
CCGCCTCCTGCCTTGAGGAAAGG
請參閱本演示右側的截圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.