首页 > 解决方案 > 匹配包含特定单词的所有行的正则表达式

问题描述

我想匹配包含单词“Freezer”的每一行。关键是该行上的所有内容都应该匹配,除了 Freezer 这个词。例如,根据我们下面的示例数据,第一行应返回“Apple”,仅不包括关键字 Freezer。第 3 行和第 5 行也是如此。我已经使用这个正则表达式选择了这条线:

^.*Freezer.*

它选择了第 1 行、第 3 行和第 5 行,但无法弄清楚如何在比赛中排除“Freezer”。

Apple Freezer   - True
Laptop 15.4" 120GB HD   -   False
Orange Freezer - Banana Mango Left AC   -   True
Prince Yellow Bed   -    False
Grapes Eyes - Fridge/Freezer   - True

谢谢!

标签: pythonregex

解决方案


这可以完成工作:

regex = r"^.+?(?=Freezer)"

解释:

^           : beginning of line
  .+?       : 1 or more any charcter but newline, not greedy
  (?=       : start positive lookahead, zero-length assertion that make sure we have after
    Freezer : literally
  )         : end lookahead

推荐阅读