Поддерживает ли оператор match/case регулярные выражения?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Поддерживает ли оператор match/case регулярные выражения?

Сообщение Anonymous »

В настоящее время я пишу текстовый редактор Python, который должен сопоставлять введенную строку с регулярным выражением. Я знаю, что могу использовать цепочку if/

Код: Выделить всё

elif/else
construct, but I'm wondering if I can shorten my code by using python 3.10's new match/

Код: Выделить всё

case конструкция. Однако вроде совпадает/case
в Python не поддерживает регулярные выражения. Может кто-нибудь сказать мне, как использовать совпадение/ для соответствия регулярным выражениям? Заранее спасибо! (Примечание: я новичок в сопоставлении/регистре в Python, поэтому, возможно, я принял совпадение/регистр Python за переключатель/регистр в других языках.)
Я пробовал следующее код, но вместо этого возвращает ошибку:

Код: Выделить всё

import re

def match_pattern(string):
match string:
case re.compile(r' *if +(? *.+ *)? *: *'):
return 'if'
case re.compile(r' *for +\w+ +in +(? *.+ *)? *: *'):
return 'for'
# and other cases
case _:
return 'invalid'

if __name__ == '__main__':
print(match_pattern('if (a == 0):'))
print(match_pattern(' for i in l:'))
возвратите следующую обратную трассировку:

Код: Выделить всё

Traceback (most recent call last):
File "match_case.py", line 16, in 
print(match_pattern('if (a == 0):'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "match_case.py", line 6, in match_pattern
case re.compile(r' *if +(? *.+ *)? *: *'):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: called match pattern must be a type
Может кто-нибудь объяснить, что здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/787 ... xpressions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»