在Python中拆分字符串并捕获组

我有以下字符串:

'Cc1cc([N+](=O)[O-])ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1'

,并想要捕获[N +]和[O-],即拆分并恢复它们。 我似乎无法通过使用re.split来恢复它们。

re.split(r'\[[^\]]*\]','Cc1cc([N+](=O)[O-])ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1')

output:
['Cc1cc(','(=O)',')ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1']

我正在寻找这样的东西:

['Cc1cc(','[N+]','[O-]',')ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1']

我知道类似的修改: Splitting on regex without removing delimitersIn Python,how do I split a string and keep the separators?

huanghongwang123 回答:在Python中拆分字符串并捕获组

如果将函数re.split用括号括起来,则会得到所需的输出:

s = 'Cc1cc([N+](=O)[O-])ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1'

re.split('(\[[^\]]*\])',s)

output : 
['Cc1cc(','[N+]','(=O)','[O-]',')ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1']
本文链接:https://www.f2er.com/2984918.html

大家都在问