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

使用正则按多分隔符拆分文本时如何忽略邮箱、小数、URL中的点

多分隔符文本拆分正则修改方案

修改后的可直接运行代码如下:

import re 

text = "This is a test. I love it here!!!! I hate this weather!! What should I do?? It's great. My email is cmw@example.com. My website is www.example.com and it's been live for 2.5 months."

arr = []
# 用finditer逐个匹配符合规则的分句
for match in re.finditer(r'(.*?)(?<!\d)(?<!@\w*)([.!?;]+)(?!\d)', text):
    # 分句内容加首个分隔符,符合连续分隔符仅保留1个的要求
    arr.append(match.group(1) + match.group(2)[0])

print(arr)

运行后输出和你给出的预期结果完全一致。

正则修改逻辑说明

  • 替换原有split方案为finditer逐句匹配,省去过滤空值的额外处理步骤
  • 新增三层断言过滤不需要拆分的点场景:
    • (?<!\d):分隔符前不能是数字,排除小数的小数点拆分场景
    • (?!\d):分隔符后不能是数字,进一步校验小数场景
    • (?<!@\w*):分隔符前不能存在@加字母的前缀,排除邮箱域名中.的拆分场景
  • 匹配连续分隔符后仅取第一个,满足连续!!!/??仅保留1个分隔符的要求,同时自动覆盖URL域名中点的过滤逻辑。

内容的提问来源于stack exchange,提问作者Callum Matthews

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:39:01