擅长:python、mysql、java
<p>你可以在<code>(?<!:):(?!:)</code>上分开。这使用了两个<a href="http://www.regular-expressions.info/lookaround.html" rel="noreferrer">negative lookarounds</a>(lookbehind和lookahead),它们断言有效匹配只有一个冒号,在它之前或之后没有冒号。</p>
<p>为了解释这种模式:</p>
<pre><code>(?<!:) # assert that the previous character is not a colon
: # match a literal : character
(?!:) # assert that the next character is not a colon
</code></pre>
<p>两个lookaround都是必需的,因为如果只有lookbehind,那么正则表达式引擎将匹配<code>::</code>中的第一个冒号(因为前一个字符不是冒号),如果只有lookahead,那么第二个冒号将匹配(因为下一个字符不是冒号)。</p>