访问Python正则表达式split()中的分隔符

访问Python正则表达式split()中的分隔符,python,regex,Python,Regex,在pythonre模块中,我使用re.split() 我的问题是:是否可以在返回部件列表的同时返回分隔符的实例?我想知道各个部分前面的分隔符是否是$c、$d等 我想我可以先做一个findall()调用,但这意味着手动调用列表中的位置,这会引入bug。这似乎也不太符合Python。如果将模式放入捕获组,则分隔符会出现在结果中: >>> string = '$aText$bFor$cStack$dOverflow' >>> re.split(r'(\$\w)',

在pythonre模块中,我使用re.split()

我的问题是:是否可以在返回部件列表的同时返回分隔符的实例?我想知道各个部分前面的分隔符是否是$c、$d等


我想我可以先做一个findall()调用,但这意味着手动调用列表中的位置,这会引入bug。这似乎也不太符合Python。

如果将模式放入捕获组,则分隔符会出现在结果中:

>>> string = '$aText$bFor$cStack$dOverflow'
>>> re.split(r'(\$\w)', string)
['', '$a', 'Text', '$b', 'For', '$c', 'Stack', '$d', 'Overflow']

如果将模式放入捕获组,则分隔符将显示在结果中:

>>> string = '$aText$bFor$cStack$dOverflow'
>>> re.split(r'(\$\w)', string)
['', '$a', 'Text', '$b', 'For', '$c', 'Stack', '$d', 'Overflow']

如果你知道当你这样做时,在RE库中会发生什么丑陋的事情,你就不会再考虑手工分割为unyththic了。是否应该返回,还是应该省略,因为它不会分开任何东西?如果你知道当你这样做时,在RE库中会发生什么丑陋的事情,你就不会再考虑手工分割为unyththic了。它应该被返回,还是应该被省略,因为它没有分隔任何内容?比另一个答案中复杂的regexp简单得多。@Barmar
findall
-方法最近运行得相当好,当时我不得不按空格分割一些关键字,但仍然保留空格。。。但你是对的。这要短得多,并且不会随着非分隔符部分变得更复杂而变得更复杂。比另一个答案中的复杂regexp简单得多。@Barmar
findall
-方法最近运行得相当好,当时我不得不按空格分割一些关键字,但仍然保留空格。。。但你是对的。这要短得多,并且不会因为非分离器零件变得更复杂而变得更复杂。