@edzech问,怎么可能把一根绳子分开,把分隔符放在里面。他的问题是marked as duplicate,而这里的方法不同于“复制”。你知道吗
我们想要分割一个字符串,但是通过在其中保留分隔符,我们不希望它们被分开。
简而言之,对于<abc>d<e><f>ghi<j>
,我们希望:
['<abc>', 'd', '<e>', '<f>', 'ghi', '<j>']
而不是:
['<', 'abc', '>' 'd', '<', 'e', '>', '<', 'f', '>', 'ghi', '<', 'j', '>']
使用split
没有帮助,因为它将根据分隔符拆分。我们想把它附在它的内容上。你知道吗
在所提出的解决方案中,不属于一对的单个打开
<
或关闭>
被排除在结果之外。你知道吗如果您还想保留
<
或>
,您可以使用:解释
<[^<>]*>
匹配开始<
,然后0+次不>
,然后是结束>
|
或(?:(?!<[^<>]*>).)+
如果右边不是开合模式,则匹配任何字符Regex demo| Python demo
例如:
结果
这是解决办法。你知道吗
输出:
说明:
<.*?>
表示匹配<content>
的所有内容[^<>]+
表示其他一切简而言之,
findall
将找到所有匹配的<content>
,否则,将找到所有其他匹配的。这样,内容将被拆分,而不会丢失分隔符。你知道吗我相信你可以用split和这个正则表达式
https://regex101.com/r/WNy5n9/1
它只不过是2个选项,带有成对的lookback/ahead断言。你知道吗
扩展
更新
请注意,在3.7版之前的Python版本中,拆分
没有正确处理空匹配。
想必他们无法分辨空的
字符串和/或如何在零宽度匹配上沿凹凸。你知道吗
似乎他们从3.7版的a**中拔出了脑袋,
所以给你。。你知道吗
演示
版本3.7.3
代码
相关问题 更多 >
编程相关推荐