擅长:python、mysql、java
<p>以下是一个您可以使用的解决方案,它不依赖于重叠匹配:</p>
<pre><code>seq = 'QYGQGYGQQG'
matches = re.findall('G(?=Y)|Y(?=G)', seq)
print([re.sub(r'^Y', 'YG', x.replace('G', 'GY')) for x in matches])
</code></pre>
<p>这张照片是:</p>
<pre><code>['YG', 'GY', 'YG']
</code></pre>
<p>这里的诀窍是只匹配<code>G</code>和<code>Y</code>,使用前向断言接下来的内容是进行完全匹配所需的<code>Y</code>或<code>G</code>。这避免了使用第二个字母的问题,第二个字母也可能是另一个后续匹配的第一个字母。然后,我们采用表示完整匹配的单字母匹配,并使用列表理解来构建原始重叠匹配</p>