如何使用 Python 中的正则表达式 (re.finditer) 找到字符串中任意位置的所有匹配项?

How can I find all matches in any position in the string using regular expression (re.finditer) in Python?

我正在使用 python 正则表达式 (regex) 查找任何字符串位置的所有匹配项(比如“GgGAT”,第 1 帧是 Gg..,第 2 帧是 gG..)。我需要使用 re.finditer 方法。我下面的代码只给我 "Gg" 而我需要 "Gg""gG";

import re

data="ACGTGgGTT" 
for match in re.finditer(r'GG|gg|Gg|gG', data):
   print (match)

您可以使用 ?=... synthax 的正则表达式前瞻:

re.finditer(r"(?=(GG|gg|Gg|gG))", data)

看看这是否有帮助:

import re

data="ACGTGgGTTgGg" 
for match in re.finditer(r'GG|gg|Gg|gG', data):
   for i in range(match.start(),match.end()):
       print (data[i]+data[i+1])

输出:

Gg
gG
gG
Gg
import re
data="ACGTGgGTgGTGGgg" 
matches = re.findall(r'G{2}', data,re.IGNORECASE) # Or re.I
print(matches)
>> ['Gg', 'gG', 'GG', 'gg']

编辑

import re
data="ACGTGgGTgGTGGgg" 
for match in re.finditer(r'G{2}', data,re.IGNORECASE):
    print(match)
>>> 
<re.Match object; span=(4, 6), match='Gg'>
<re.Match object; span=(8, 10), match='gG'>
<re.Match object; span=(11, 13), match='GG'>
<re.Match object; span=(13, 15), match='gg'>