【问题标题】:Regex, test to see if characters other than exists正则表达式,测试是否存在其他字符
【发布时间】:2016-07-05 04:00:25
【问题描述】:

我想使用正则表达式来查看是否存在除某个集合之外的任何字符。

例如,我想测试字符串中的字母“p”、“v”、“c”。如果字符串中有任何其他字符,我希望测试返回 True。如果只存在“p”、“v”、“c”或它们的组合,我希望测试返回 False。

'v' 返回 False

'pv' 返回 False

'pvc' 返回 False

'pd' 返回真

'p(' 返回真

'apvc' 返回真

'xyz' 返回真

我将如何使用 re 来表达这一点? 谢谢。

【问题讨论】:

  • 您确实意识到regex 绝对是错误的工具,对吧?
  • 另外 - pvc 中的至少一个必须存在吗?例如:xyz 会返回什么?
  • @JonClements 这个工具/代码是什么? xyz 应该返回 True

标签: python regex


【解决方案1】:

使用set(..)

if set(yourString) - set("pvc"):
    return True
else:
    return False

编辑:这应该变成一个单一的表达式。

return set(your_string) - set('pvc')

【讨论】:

  • 这是一个优雅的解决方案
  • 你也可以写成set(your_string).difference('pvc')
【解决方案2】:

我认为这最直接地抓住了你的意图:

any(char not in 'pvc' for char in mystring)

任何阅读代码的人都应该清楚你想要做什么。

【讨论】:

    【解决方案3】:
    import re
    not (re.search('^[pvc]+$', string))
    

    如果字符串为空,不确定你想要什么,这个会返回true。

    【讨论】:

      【解决方案4】:
      import re
      
      x = 'pvc'
      
      regex = re.compile(r'[^p|v|c]')
      
      if regex.search(x) is not None:
      
          print True
      
      else:
      
          print False
      

      【讨论】:

        猜你喜欢
        • 2012-06-02
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 2012-06-11
        • 1970-01-01
        • 2019-01-02
        • 2011-06-06
        相关资源
        最近更新 更多