Skip to main content
 首页 » 编程设计

用于搜索 NOT 和 AND 表达式的 Python Regex

2025年05月04日9del

这里有很多很棒的正则表达式答案,但我没能找到适合我的东西。这是情况:

我有一个很大的数字列表。假设它只是一个从 1 到 100 的数字列表,我只想使用包含 10、20 和 50 的列表。但是代码的构建方式(并且不能更改!)是忽略正则表达式不接受。所以,我不能只说 ^10$|^20$|^50$ 而是我需要 NOT 它们,然后 AND 它们。

我试过这个:

(?!^10$)(?!^20$)(?!^50$)  

运气不好,似乎无法在任何地方找到任何有效的东西。

有什么想法吗?非常感谢!

附注我只是做了这个特殊的例子来展示我在做什么,我不会使用正则表达式,这是我遇到的实际问题....:-)

请您参考如下方法:

如果我正确理解你的问题,你需要的是这样的:

(?!^10$)(?!^20$)(?!^50$)^.*$ 

当该行包含不同于 "10"、"20" 或 "50" 的内容时,这将匹配。

但是,这似乎是处理您的问题的一种相当麻烦的方法。这条线上的更多内容不是更好吗?

import re 
pattern = re.compile(r"^(?:10|20|50)$") 
for text in list_of_texts: 
  m = pattern.match(text) 
  if m is not None: 
    print "Found something interesting (not 10, nor 20 nor 50): %s" % text