有没有办法在 match case 语句中使用endswith/startswith?

Ily*_*lya 7 python case match

有没有办法使用匹配大小写来选择字符串结尾/开头,如下所示?

match text_string:
  case 'bla-bla':
    return 'bla'
  case .endswith('endofstring'):
    return 'ends'
  case .startswith('somestart'):
    return 'start'
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 12

你很接近。您想要对模式进行条件保护,以其他方式匹配任何内容。

match text_string:
  case 'bla-bla':
    return 'bla'
  case s if s.endswith('endofstring'):
    return 'ends'
  case s if s.startswith('somestart'):
    return 'start'
Run Code Online (Sandbox Code Playgroud)

与以下内容相比,这并没有多大收获。

if text_string == 'bla-bla':
  return 'bla'
elif text_string.endswith('endofstring'):
  return 'ends'
elif text_string.startswith('somestart'):
  return 'start'
Run Code Online (Sandbox Code Playgroud)

除非您也使用match并且想要区分两个相同的模式。