如何使用 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'>
我正在使用 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'>