擅长:python、mysql、java
<p>或者你唯一能做的就是:</p>
<pre><code>\b(I[MBDPI]{2}|[MBDPI]I[MBDPI]|[MBDPI]{2}I)\b
</code></pre>
<p><code>\b</code>字符与零宽度字边界匹配。这样可以确保匹配的字符长度正好是三个字符。</p>
<p>否则,您将遇到<a href="http://en.wikipedia.org/wiki/Regular_language" rel="nofollow noreferrer">regular language</a>所能做的限制。</p>
<p>另一种选择是匹配:</p>
<pre><code>\b[MBDPI]{3}\b
</code></pre>
<p>抓住那群人,然后找一个I</p>
<p><strong>编辑:</strong>为了得到完整的答案,我将调整使用<a href="http://www.regular-expressions.info/lookaround2.html" rel="nofollow noreferrer">Testing The Same Part of a String for More Than One Requirement</a>的<a href="https://stackoverflow.com/questions/2385762/how-do-i-include-a-boolean-and-within-a-regex/2385809#2385809">Jens' answer</a>:</p>
<pre><code>\b(?=[MBDPI]{3}\b)\w*I\w*
</code></pre>
<p>检查单词边界以确保它只有三个字符长。</p>
<p>这是一个更先进的解决方案,适用于更多的情况,但我通常喜欢什么更容易阅读(作为“或”版本imho)。</p>