0

我有一个字符串,我正在尝试针对一些正则表达式模式进行验证,我希望因为模式匹配在 3.10 中可用,我可以使用它而不是创建一个 if-else 块。

考虑一个可能值为 1021102、1.25.32、string021 的字符串“validateString”。

我尝试的代码如下所示。

match validateString:
    case regex1:
        print('Matched regex1')
    case regex2:
        print('Matched regex2')
    case regex3:
        print('Matched regex3')

对于正则表达式 1、2 和 3,我尝试了字符串正则表达式模式以及 re.compile 对象,但它似乎不起作用。

我一直试图在互联网上找到这方面的例子,但似乎找不到任何涵盖正则表达式模式匹配与新的 python 模式匹配的例子。

关于如何使它工作的任何想法?

谢谢!

4

1 回答 1

0

无法使用正则表达式模式通过结构模式匹配进行匹配(此时)。

来自:PEP0643:结构模式匹配

PEP 634:结构模式匹配
结构模式匹配以匹配语句和带有关联动作的模式的案例语句的形式添加。模式序列、映射、原始数据类型以及类实例组成。模式匹配使程序能够从复杂的数据类型中提取信息,在数据结构上进行分支,并根据不同形式的数据应用特定的操作。(强调我的

这没有任何暗示,re在提供的模式上调用模块的匹配/搜索功能旨在用于匹配。


您可以通过阅读实际 PEP 了解更多关于结构模式匹配背后的原因:

它们还包括有关如何使用它的大量示例。

于 2022-01-12T11:09:40.013 回答