擅长:python、mysql、java
<p>在所提出的解决方案中,不属于一对的单个打开<code><</code>或关闭<code>></code>被排除在结果之外。你知道吗</p>
<p>如果您还想保留<code><</code>或<code>></code>,您可以使用:</p>
<pre><code><[^<>]*>|(?:(?!<[^<>]*>).)+
</code></pre>
<p>解释</p>
<ul>
<li><code><[^<>]*></code>匹配开始<code><</code>,然后0+次不<code>></code>,然后是结束<code>></code></li>
<li><code>|</code>或</li>
<li><code>(?:(?!<[^<>]*>).)+</code>如果右边不是开合模式,则匹配任何字符</li>
</ul>
<p><a href="https://regex101.com/r/Nc4Jwt/1" rel="nofollow noreferrer">Regex demo</a>| <a href="https://ideone.com/fxIic3" rel="nofollow noreferrer">Python demo</a></p>
<p>例如:</p>
<pre><code>import re
content = "<abc>d<e><f>ghi<j>test><g>"
result = re.findall(r"<[^<>]*>|(?:(?!<[^<>]*>).)+", content)
print(result)
</code></pre>
<p>结果</p>
<pre><code>['<abc>', 'd', '<e>', '<f>', 'ghi', '<j>', 'test>', '<g>']
</code></pre>