首页 > 解决方案 > 正则表达式负前瞻(python)

问题描述

我尝试了多种方法并阅读了当前可用的博客,但没有运气

我只想检测

1. pavneet
2. pavnet

但不是

1. pavneet's name
2. pavnet's name
3. pavneet name
4. pavnet's name

(即使在 's 之后也想将名称添加为 -ve lookahead)

到目前为止,我已经尝试过这个https://regex101.com/r/8SUCMQ/1

(pavneet|pavne{1,2}t)\'?s?(?!\ *name)

标签: pythonregex

解决方案


您可以将其's放在前瞻中并使其成为可选。

你也可以(pavneet|pavne{1,2}t)写成pavnee?t

\bpavnee?t(?!(?:'s)? name\b)
  • \bpavnee?t防止部分匹配、匹配pavnetpavneet
  • (?!负前瞻
    • (?:'s)? 可选匹配's和空格
    • name\b匹配name和单词边界
  • )关闭前瞻

正则表达式演示


推荐阅读