<p>怎么样:</p>
<pre><code>\b(?=.?[DE].?[DE])[A-Z]{3}\b
</code></pre>
<p><strong>说明:</strong></p>
<pre><code>\b : word boundary
(?= : start lookahead, zero-length assertin that make sure we have
.? : optional any character
[DE] : D or E
.? : optional any character
[DE] : D or E
) : end lookahead
[A-Z]{3} : A capital letter, must appear 3 times
\b : word boundary
</code></pre>
<p><strong>看到它的实际效果:</strong></p>
<p><a href="https://regex101.com/r/uo7tv8/2" rel="nofollow noreferrer">https://regex101.com/r/uo7tv8/2</a></p>
<p>Python实现:</p>
<pre><code>str = 'For example: DEA or ESD or DZE or PDE should all match, but not DEDE ABC DEF GHI JKL.'
regex = r"\b(?=.?[DE].?[DE])[A-Z]{3}\b"
print re.findall(regex, str)
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>['DEA', 'ESD', 'DZE', 'PDE', 'DEF']
</code></pre>
<hr/>
<h2>根据评论编辑:</h2>
<pre><code>str = 'ADFDFAGERASDFSAERSEDSEDEFADF'
regex = r"(?=.?[DE].?[DE])[A-Z]{3}"
print re.findall(regex, str)
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>['ADF', 'SED', 'SED']
</code></pre>