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

Python单正则实现:匹配指定词并排除含抑制词的行

解决方案

正则表达式

import re

pattern = r'^(?!.*\b(check|draft)\w*).*\b(attend|confer|call)\w*.*$'

正则说明

  • ^:锚定行起始位置
  • (?!.*\b(check|draft)\w*):负向先行断言,确保整行中不存在以check或draft开头的单词(\w*匹配后续任意字母数字,覆盖checking、drafting这类变体)
  • .*\b(attend|confer|call)\w*.*:匹配包含attend/confer/call开头单词的整行内容,\b确保匹配完整单词前缀,\w*覆盖衍生词(如attending、conference)
  • $:锚定行结束位置

验证示例

text1 = "接收并起草Sharma先生关于和解会议出席事宜的信函。"
text2 = "接收并审阅Sharma先生关于和解会议出席事宜的信函。"

print(re.fullmatch(pattern, text1))  # 输出 None(含draft相关词,不匹配)
print(re.fullmatch(pattern, text2))  # 输出匹配对象(无抑制词,含attend相关词)

原正则问题分析

你之前尝试的(\battend|\bconfer|\bcall)(?!.*?\b(check|draf)).*存在逻辑缺陷:负向断言仅检查目标词之后的内容,若抑制词(如drafting)出现在目标词之前,无法被检测到,导致错误匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:01:17