<p>我相信你可以用split和这个正则表达式</p>
<pre><code>(?<=>)(?=[a-z<])|(?<=[a-z>])(?=<)
</code></pre>
<p><a href="https://regex101.com/r/WNy5n9/1" rel="nofollow noreferrer">https://regex101.com/r/WNy5n9/1</a></p>
<p>它只不过是2个选项,带有成对的lookback/ahead断言。你知道吗</p>
<p>扩展</p>
<pre><code> (?<= > ) # Behind a >
(?= [a-z<] ) # Ahead either a-z or <
| # or,
(?<= [a-z>] ) # Behind either a-z or >
(?= < ) # Ahead a <
</code></pre>
<p><strong><em>更新</em></strong><br/>
请注意,在3.7版之前的Python版本中,拆分<br/>
没有正确处理空匹配。<br/>
想必他们无法分辨空的<br/>
字符串和/或如何在零宽度匹配上沿</em>凹凸。你知道吗</p>
<p>似乎他们从3.7版的a**中拔出了脑袋,<br/>
所以给你。。你知道吗</p>
<p>演示</p>
<p>版本3.7.3</p>
<pre><code>>>> import sys
>>> print( sys.version )
3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]
</code></pre>
<p>代码</p>
<pre><code>>>> import re
>>> rx = re.compile( r"(?<=>)(?=[a-z<])|(?<=[a-z>])(?=<)" )
>>> s = "<abc>d<e><f>ghi<j>test><g>"
>>> x = re.split( rx, s )
>>> print ( x )
['<abc>', 'd', '<e>', '<f>', 'ghi', '<j>', 'test>', '<g>']
</code></pre>