擅长:python、mysql、java
<p><sub><em>将我对问题的原始评论作为回答</em><sub></p>
<p>除了已经发布的“单一正则表达式”解决方案外,请考虑以下解决方案:</p>
<ol>
<li>首先,查找<code>AA</code>和<code>ZZ</code>之间任何文本的所有匹配项,例如,使用以下正则表达式:<code>AA(.+)ZZ</code>。将所有匹配项存储在列表中</李>
<li>循环浏览(或使用筛选函数,如果可用)前面步骤中的匹配项列表,并删除不包含<code>XX</code>的匹配项。您甚至不需要为此使用正则表达式,因为包括Python在内的大多数语言都有专用的字符串方法</李>
</ol>
<p>你得到的回报是一个干净的解决方案,没有任何复杂的正则表达式。它易于阅读,易于维护,如果要添加任何新条件,可以在最终结果中应用这些条件</p>
<p>要使用一些代码(<a href="https://repl.it/repls/BluevioletElasticGlitch" rel="nofollow noreferrer">you can test it here</a>)来支持它,请执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>import re
test_str = """
IYAABMDHRPONWUYZZ
BVAABDMYBXXWZZCKU
"""
# First step: find all strings between AA and ZZ
match_results = re.findall("AA(.+)ZZ", test_str, re.I)
# Second step: filter out the ones that contain XX
final_results = [match for match in match_results if not ("XX" in match)]
print(final_results)
</code></pre>
<p>至于分配给<code>final_results</code>的部分,它被称为列表理解。既然这不是问题的一部分,我就不在这里解释了</p>