擅长:python、mysql、java
<p>您需要分两步完成:1)提取<code>aa</code>和<code>bb</code>之间没有<code>aa</code>和<code>bb</code>的子字符串,然后2)提取所有<code>targetXXX</code>子字符串:</p>
<pre><code>import re
s="aa.....target1...target2.....bb...target3...bb"
m=re.search(r'aa((?:(?!aa).)*?)bb', s)
if m:
print(re.findall(r"target\d+", m.group(1)))
# => ['target1', 'target2']
</code></pre>
<p>参见<a href="http://rextester.com/URTMCW91816" rel="nofollow noreferrer">Python demo online</a>。你知道吗</p>
<p><strong>图案细节</strong></p>
<ul>
<li><code>aa</code>-a<code>aa</code>子串</li>
<li><code>((?:(?!aa).)*?)</code>-任何字符,这不是<code>aa</code>字符序列的起点,0或更多重复,尽可能少</li>
<li><code>bb</code>-a <code>bb</code>子串</li>
</ul>
<p><a href="https://regex101.com/r/qKo0sF/2" rel="nofollow noreferrer">^{<cd13>}</a>模式只匹配<code>target</code>子字符串及其后面的任何1+数字。你知道吗</p>