
结论先按照最外层捕获组进行划分字符串如果有符合最外层捕获组即全部pattern内容的字符出现就先将上一次分隔结束位置到当前pattern匹配的开始位置作为划分的字符串并加入到result列表中。同时将捕获组按照由外至内的顺序依序将捕获组内容放入result列表中。import re # 目标拆分类似 2024-03-19 12:30:45 的字符串同时保留分隔符区分日期分隔符-和时间分隔符: # 正则( (\d)[-:] ) 外层组1匹配 数字分隔符内层组2只匹配数字 text 2024-03-19 12:30:45 # 正则解析 # 外层组 ( ... )匹配 数字(-或:) # 内层组 (\d)仅匹配数字部分 pattern r((\d)[-:]) result re.split(pattern, text) print(拆分结果, result) print(结果长度, len(result))代码运行结果拆分结果 [, 2024-, 2024, , 03-, 03, 19 , 12:, 12, , 30:, 30, 45] 结果长度 13结果分析1. 第一次匹配pattern是2024-字符串但此时上一个划分结果还未有为字符开头所以第一个划分出的是空字符串。2. 然后对2024-字符串按照捕获组由外至内的顺序加入到拆分结果列表中先加入2024-对应((\d)[-:])再加入2024 对应(\d)。