python匹配大写和小写字母,而不使用上下

时间:2019-03-29 15:09:07

标签: python regex

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

例如,有一种方法可以实现以下目标:

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以通过以下方法进行检查:

>>> import re
>>> re.match('^[yY]$', 'y')
<re.Match object; span=(0, 1), match='y'>
>>> re.match('^[yY]$', 'Y')
<re.Match object; span=(0, 1), match='Y'>
>>> re.match('^[yY]$', 'X')# something that doesn't match gives None