在Python中拆分字符串和捕获组
我有以下字符串:在Python中拆分字符串和捕获组,python,regex,string,split,tokenize,Python,Regex,String,Split,Tokenize,我有以下字符串: '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)C
'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)','[O-]', ')ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1']
我知道有这样的编辑:
或
如果应用函数重新拆分,使用括号包装函数,则会得到所需的输出:
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']
您可以使用:
re.findall(r'\[([^\]*)\]'、'Cc1cc([N+](=O)[O-])ccc1OCC(C)(O)CN1CCN(CC2CCC2)CC1')
使用捕获组\[([^\]*)\]
并进行匹配,而不是进行拆分。我得到的结果是:['Cc1cc('、'N+]、'N+'、'、'ccc1OCC(O)'、'O-'、'ccc1OCC(C)(O)CN1C1')、'CC2CCC1'],您可以添加一行或两行解释,并显示实际结果。