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

如何用正则表达式负向预查排除单词?匹配非Sold状态车辆

匹配非sold状态的car并捕获状态的正则方案

你的原正则car(?!\s+sold)的问题在于:它只是做了一个“紧邻位置的负向预查”,仅检查car后面是否直接跟着\s+sold,既没法捕获状态信息,也不能确保后续的整个状态都不是sold,更没限定只匹配整行的有效内容。

要实现匹配所有状态不为sold的car并捕获对应状态,用下面的正则就能解决:

r"^\d+\s+car\s+(?!sold)(.+)$"

正则拆解

  • ^:锚定行开头,避免匹配文本中零散的car
  • \d+\s+:匹配行首的序号和后续空格
  • car\s+:匹配目标关键词car和它后面的空格
  • (?!sold):负向预查,确保接下来的内容不是sold(零宽度断言,不消耗字符)
  • (.+)$:捕获从预查位置到行尾的所有内容,也就是我们需要的状态信息

匹配效果

用这个正则处理你的车辆列表,会精准匹配第2行和第4行,捕获的状态分别是not sold和Repair,完全符合你的需求。

如果不需要匹配序号,只关注car和状态,可以简化成:

r"car\s+(?!sold)(.+)$"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:25:19