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

如何用正则负向前瞻忽略目标词前多词短语匹配特定语境的mass

适配需求的正则实现方案

核心规则(Python 3.10+ 兼容)

直接使用可变长度负向后顾断言实现,后续新增排除短语只需更新断言内的列表即可,匹配时开启忽略大小写标志适配写法差异:

import re

# 统一管理需要排除的前置短语,后续新增直接往列表里加
exclude_prefixes = [
    r"LV ",
    r"normal ",
    r"no cardiac ",
    r"indexed ",
    r"heart ",
]
# 拼接生成正则
pattern = re.compile(
    fr"\b(?<!{'|'.join(exclude_prefixes)})mass\b",
    flags=re.IGNORECASE
)

匹配逻辑

  • (?<!前缀1|前缀2|...)是负向后顾断言,会检查mass单词的前方是否出现过任意一个指定的排除前缀,出现则不匹配
  • 所有排除规则统一在exclude_prefixes列表维护,不需要修改正则主体结构,扩展性极强
  • 开启re.IGNORECASE后自动适配No、Normal、CARDIAC这类大小写变体,无需手动写多套匹配规则

用例匹配结果

  • 命中(有效匹配)
    • There is a 2mm mass in the RA
    • large irregular mass in the left ventricle
    • cardiac mass
  • 不命中(无效匹配)
    • LV mass: 135g
    • Normal heart mass
    • no cardiac mass

低版本Python兼容方案

如果使用的是Python 3.9及以下版本,不支持可变长度负向后顾,可以改用负向前瞻包裹前缀范围的写法,逻辑完全一致:

pattern = re.compile(
    r"\b(?!LV |normal |no cardiac |indexed |heart )[^\s]{0,100}\s*mass\b",
    flags=re.IGNORECASE
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:36:01