正则表达式负前瞻(python)

时间:2021-07-01 11:35:09

标签: python regex

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

我只想检测

1. pavneet
2. pavnet

但不是

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

Regex demo