擅长:python、mysql、java
<p>这里有一种方法,使用lookaheads依次断言每个条件。在</p>
<pre><code>^(?=[^a]*a(?:[^a]*a[^a]*a)*[^a]*$)(?=[^b]*b(?:[^b]*b[^b]*b)*[^b]*$)(.*)$
</code></pre>
<p>下面是<a href="http://regexpal.com/?flags=gm&regex=%5E%28%3F%3D%5B%5Ea%5Cn%5D%2aa%28%3F%3A%5B%5Ea%5Cn%5D%2aa%5B%5Ea%5Cn%5D%2aa%29%2a%5B%5Ea%5Cn%5D%2a%24%29%28%3F%3D%5B%5Eb%5Cn%5D%2ab%28%3F%3A%5B%5Eb%5Cn%5D%2ab%5B%5Eb%5Cn%5D%2ab%29%2a%5B%5Eb%5Cn%5D%2a%24%29%28.%2a%29%24&input=ba%0D%0Aabbb%0D%0Abbba%0D%0Abbab%0D%0Aababab%0D%0Abbaaba%0D%0Aabb%0D%0Aaabb%0D%0Aaabba%0D%0A%0D%0Aa%0D%0Ab%0D%0A%0D%0A" rel="nofollow">a demo</a>和您的示例。(演示中的<code>\n</code>用于演示目的。另外,如果只需要测试匹配,而不是捕获,则可以删除<code>(.*)$</code>。)</p>
<p>我将很快添加一个解释。在</p>
<hr/>
<p><strong>说明</strong></p>
<p>我们只需要看一半:</p>
^{pr2}$