python匹配字符串大小写部分

cclgggtu  于 2022-12-02  发布在  Python
关注(0)|答案(2)|浏览(198)

我想知道我是否可以在Python中使用大小写匹配来匹配字符串--也就是说,字符串是否包含大小写匹配。例如:

mystring = "xmas holidays"
match mystring:
      case "holidays":
           return true
      case "workday":
           return false

我能理解为什么不能,因为这可能同时匹配几个病例,但我想知道这是否可能。

j5fpnvbx

j5fpnvbx1#

match语句中,strings are compared using == operator意味着case模式必须完全等于match表达式(本例中为mystring)。
为了解决这个问题,您可以建立自订类别,继承自str并覆写__eq__方法。这个方法应该委派给__contains__

>>> class MyStr(str):
...     def __eq__(self, other):
...             return self.__contains__(other)
... 
>>> 
>>> mystring = MyStr("xmas holidays")
>>> match mystring:
...     case "holiday":
...             print("I am here...")
... 
I am here...
rfbsl7qr

rfbsl7qr2#

您可以使用[*_]通配符序列捕获模式:https://peps.python.org/pep-0622/#sequence-patterns

def is_holiday(yourstring: str):
    match yourstring.split():
        case [*_, "holidays"]:
            return True
        case [*_, "workday"]:
            return False

print(is_holiday("xmas holidays"))

相关问题