【发布时间】:2019-01-02 22:35:20
【问题描述】:
我在使用前瞻时无法理解正则表达式的行为。
我有一个给定的字符串,其中有两个重叠的模式(以M 开头,以p 结尾)。我的预期输出是MGMTPRLGLESLLEp 和MTPRLGLESLLEp。我下面的 python 代码产生了两个 empty 字符串,它们与预期的输出共享一个共同的开头。
删除前瞻(?=) 只会产生一个较大的输出字符串。有没有办法修改我的正则表达式术语以防止出现空字符串,以便我可以使用一个正则表达式术语获得两个结果?
import re
string = 'GYMGMTPRLGLESLLEpApMIRVA'
pattern = re.compile(r'(?=M(.*?)p)')
sequences = pattern.finditer(string)
for results in sequences:
print(results.group())
print(results.start())
print(results.end())
【问题讨论】:
标签: python regex string lookahead