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

Python正则表达式如何按‘.’和‘and’多个分隔符分割字符串?

解决正则按.和and分割字符串的问题

你的问题出在两个正则语法细节上:

  1. .是正则的元字符,会匹配任意单个字符,而非字面意义的句号,必须转义成\.才能匹配真实的句号。
  2. 原写法.|and会被正则引擎解析为「匹配.,或者匹配a,或者匹配n,或者匹配d」,而非把and作为整体分割符。

正确实现代码

用非捕获分组把两个分割符包裹起来,同时处理分割符前后的空格,避免结果里出现多余空格:

import re

sentence = "I want to eat fish and I want to buy a car. Therefore, I have to make money."
# 正则说明:\s* 匹配前后空格;(?:...) 非捕获分组,避免分割结果包含分组内容;\.|and 匹配句号或and
split_result = re.split(r'\s*(?:\.|and)\s*', sentence)
# 过滤可能的空字符串(比如原句末尾的句号会产生空元素)
split_result = [item for item in split_result if item]
print(split_result)

执行后输出就是你期望的:
['I want to eat fish', 'I want to buy a car', 'Therefore, I have to make money']

关键细节解释

  • (?:\.|and):用非捕获分组将两个分割符打包,确保正则引擎把\.和and当作两个独立的整体分割符,而非拆成单个字符。
  • \s*:匹配分割符前后的任意空格,这样分割后的字符串不会带前导或尾随空格。
  • 最后过滤空字符串:如果原句子以句号结尾,split会生成一个空元素,用列表推导式去掉即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:45:32