擅长:python、mysql、java
<p>这应该根据您的(模糊的)限制条件进行:
<code>(?i)(?<![#@])x[- ]?men(?!:)( apocalypse)?</code></p>
<ul>
<li><code>(?i)</code>忽略大小写标志</li>
<li><code>(?<![#@])</code>在'xmen'之前没有<code>#</code>或<code>@</code></li>
<li><code>[- ]?</code>可选<code>-</code>或<code/> </li>
<li><code>(?!:)</code>在'xmen'后没有冒号</li>
<li><code>( apocalypse)?</code>可选启示字符串</li>
</ul>
<hr/>
<p><strong>编辑</strong>:我认为使用边界(<code>\b</code>)更合适,而不是要求前面/后面有空格,即<code>(?i)\b(?<!@)(x[- ]?men:?\s?(?:apocalypse)?)\b</code>,因为“xmen”可能会在句子开头。你知道吗</p>