Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中拆分字符串和捕获组_Python_Regex_String_Split_Tokenize - Fatal编程技术网

在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'],您可以添加一行或两行解释,并显示实际结果。