擅长:python、mysql、java
<p>如果只想匹配字符A-Z,可以使用</p>
<pre><code>AA(?:[A-WYZ]|X(?!X))*ZZ
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li><code>AA</code>逐字匹配</li>
<li><code>(?:</code>
<ul>
<li><code>[A-WYZ]</code>匹配除X以外的A-Z</li>
<li><code>|</code>或</li>
<li><code>X(?!X)</code>匹配X并断言直接右边的不是X</li>
</ul></li>
<li><code>)*</code>关闭非捕获组并重复0+次</li>
<li><code>ZZ</code>逐字匹配</li>
</ul>
<p><a href="https://regex101.com/r/ZafZGl/2" rel="nofollow noreferrer">Regex demo</a></p>
<p>如果还有其他字符,另一种选择是使用<a href="https://www.regular-expressions.info/charclass.html#negated" rel="nofollow noreferrer">negated character class</a><code>[^\sX]</code>匹配除X或空白字符以外的任何字符:</p>
<pre><code>AA(?:[^\sX]|X(?!X))*ZZ
</code></pre>
<p><a href="https://regex101.com/r/ZafZGl/4" rel="nofollow noreferrer">Regex demo</a></p>
<p>另一种选择是使用令牌:</p>
<pre><code>AA(?:(?!\btest\b).)*BB
</code></pre>
<p><a href="https://regex101.com/r/XxXZot/1" rel="nofollow noreferrer">Regex demo</a></p>