擅长:python、mysql、java
<p>左侧和右侧边界模式(<code>[\(\+]</code>和<code>[\)\+]</code>)正在使用它们匹配的文本,因此不会检测到连续的匹配</p>
<p>你可以解决这个问题<a href="https://www.regular-expressions.info/lookaround.html" rel="nofollow noreferrer">using <strong>lookarounds</strong></a></p>
<pre class="lang-py prettyprint-override"><code>r"(?<=[(+])([XYZ]\d\d\d)(?=[)+])"
r"(?<=[(+])[XYZ]\d{3}(?=[)+])"
</code></pre>
<p><em>详细信息</em></p>
<ul>
<li><code>(?<=[(+])</code>-与指定位置匹配的正向查找
前面紧跟着<code>(</code>或<code>+</code></li>
<li><code>[XYZ]</code>-<code>X</code>、<code>Y</code>或<code>Z</code></li>
<li><code>\d{3}</code>-三位数字</li>
<li><code>(?=[)+])</code>-一个积极的前瞻,确保当前位置右侧立即有<code>)</code>或<code>+</code></李>
</ul>
<p>注意<a href="https://stackoverflow.com/questions/1324676/what-is-a-word-boundary-in-regex-does-b-match-hyphen">word boundary</a>,<code>\b</code>,在某些情况下可以解决这个问题,在这里它也可能对您有所帮助</p>