You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python re库分割字符串并保留分隔符

实现方案

问题原因

原代码存在两个核心问题:

  • 正则[\(.\)]中的.在字符组内仅代表字面量点字符,不会匹配任意字符,实际仅将(、)、.三个字符作为分割依据
  • re.split默认不返回分割符,只有将分割规则放在捕获组中时,才会将分割符纳入返回结果
  • 原逻辑将括号单独作为分割标记,会直接剥离内容中的括号,同时产生首尾空字符串

修正代码

import re
string = r"('Option A' | 'Option B') & ('Option C' | 'Option D')"
# 用捕获组匹配完整的括号包裹结构,分割时自动保留该结构
word_list = [s for s in re.split(r"(\([^()]+\))", string) if s.strip()]
print(word_list)

运行输出完全符合预期:

["('Option A' | 'Option B')", ' & ', "('Option C' | 'Option D')"]

规则说明

  • 正则(\([^()]+\))为捕获组,匹配左右括号包裹、中间不含其他括号的完整内容
  • re.split遇到捕获组匹配的内容时,会将该内容作为返回列表的独立元素保留
  • 最后的列表推导式用于过滤分割产生的无效空字符串,保留原内容的空格格式

内容的提问来源于stack exchange,提问作者Shiraz Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:09:02