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

Python中使用re.sub时如何排除特定单词?

解决所有格清理并排除特定单词的问题

你需要的是在移除所有格s'时,跳过特定单词(比如这里的states),核心思路是用正则表达式的否定后顾断言来精准控制匹配范围。

修正后的代码示例

import re

original_text = "united states' and washingtons' and civilians' and qur'an"
# 使用否定后顾断言,仅匹配前面不是"state"的s'
cleaned_text = re.sub(r"(?<!state)s'", '', original_text)

print(cleaned_text)
# 输出: united states and washington and civilian and qur'an

代码解释

  • (?<!state):这是否定后顾断言,表示仅当s'的前面不是state这个字符串时,才会匹配后面的s'。这样states'里的s'因为前面是state,会被跳过,保留为states;而其他单词的s'(比如washingtons'、civilians')会被匹配并移除,得到你想要的结果。
  • s':匹配所有格的结尾部分,替换为空字符串就完成了清理。

扩展:排除多个特定单词

如果你需要排除多个单词(比如同时保留states'和jones'),可以用|分隔多个关键词,修改正则为:

cleaned_text = re.sub(r"(?<!state|jone)s'", '', original_text)

这样jones'也会被保留为jones,其他的s'正常清理。

处理大小写问题

如果文本里有大小写混合的情况(比如States'),可以加上re.IGNORECASE标志忽略大小写:

cleaned_text = re.sub(r"(?<!state)s'", '', original_text, flags=re.IGNORECASE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:32:38