【问题标题】:Python Regex to search for NOT and AND expressionPython Regex 搜索 NOT 和 AND 表达式
【发布时间】:2012-05-02 20:51:59
【问题描述】:

这里有很多很棒的正则表达式答案,但我找不到任何适合我的东西。情况如下:

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

我试过这个:

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

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

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

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

【问题讨论】:

  • “但是代码的构建方式......是被正则表达式忽略”是什么意思?如果正则表达式被忽略,它有什么目的?
  • 意思...如果我自己写的话,我会根据正则表达式“接受”,所以它只是 10|20|50
  • 您想要的是一种自动生成正则表达式补码的方法。理论上我很确定这是可能的,但我在网上找不到任何东西(对不起!)。

标签: python regex regex-negation


【解决方案1】:

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

(?!^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

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多