python中已编译的regex对象的类型

发布于 2021-01-29 19:01:32

python中已编译的正则表达式的类型是什么?

我特别要评估

isinstance(re.compile(''), ???)

确实是出于自省的目的。

我有一个解决方案,就是拥有一些全局常量REGEX_TYPE = type(re.compile('')),但是它看起来并不十分优雅。

编辑: 我想这样做的原因是因为我有字符串列表和已编译的正则表达式对象。我想根据列表“匹配”字符串

  • 对于列表中的每个字符串,请尝试检查字符串是否相等。
  • 对于列表中的每个正则表达式,请尝试检查字符串是否与给定的模式匹配。

我想到的代码是:

for allowed in alloweds:
    if isinstance(allowed, basestring) and allowed == input:
        ignored = False
        break
    elif isinstance(allowed, REGEX_TYPE) and allowed.match(input):
        ignored = False
        break
关注者
0
被浏览
160
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果没有明确指定某种类型,则使用type内置函数在运行时发现答案没有任何问题:

    >>> import re
    >>> retype = type(re.compile('hello, world'))
    >>> isinstance(re.compile('goodbye'), retype)
    True
    >>> isinstance(12, retype)
    False
    >>>
    

    在运行时发现类型可以防止您访问私有属性以及将来对返回类型的更改。在type这里使用并没有什么不好的地方,尽管根本不想知道类型。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看