首页 > 解决方案 > python匹配大小写字母而不使用小写或大写

问题描述

如何使字符串不区分大小写,以便在针对大写或小写字母进行测试时每次都返回 true。

例如有没有办法实现以下目标:

>>> someregex('y') == 'Y'
True
>>> someregex('y') == 'y'
True

someregex 会是什么样子?请注意,在我的程序中,仅允许对表达式的左侧部分进行更改,并且我不能简单地在右侧使用 .lower() 。

谢谢

标签: pythonregex

解决方案


这听起来像您想要比较时不区分大小写的字符串的某个子类。

class CaseInsensitiveString(str):
    def __eq__(self, other):
        """
        This overloads the == operator to make it perform a case-insensitive comparison
        """
        return self.lower() == other.lower()

使用该子类:

>>> CaseInsensitiveString('y') == 'Y'
True

>>> CaseInsensitiveString('y') == 'y'
True

推荐阅读