【发布时间】:2019-12-03 14:34:41
【问题描述】:
我有以下字符串:
'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']
我知道有如下修改: Splitting on regex without removing delimiters 或 In Python, how do I split a string and keep the separators?
【问题讨论】:
-
您可以使用:
re.findall(r'\[([^\]]*)\]','Cc1cc([N+](=O)[O-])ccc1OCC(C)(O)CN1CCN(Cc2ccccc2)CC1') -
使用捕获组
\[([^\]]*)\]并匹配而不是拆分
标签: python regex string split tokenize