簡體   English   中英

python正則表達式,用於查找所有匹配項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM