1

可能重复:
检查变量是否为 SRE_Match

我需要确定传递给函数的参数是否是正则表达式匹配类型。目前我有:

re_type = type(re.compile(''))

def func(result):
    if isinstance(result, re_type):
        print("re")

但是,我永远无法让它重新打印。当我打印结果时,我得到:

<_sre.SRE_Match object at 0x7fed5330>

有没有更简单的方法来识别这个对象?

4

1 回答 1

2

将第一行更改为:

re_type = type(re.match('', ''))

当前,您将 re_type 设置为正则表达式的类型,而不是将正则表达式应用于输入的匹配项。

还要注意,re 模块将在没有匹配的地方返回 None,所以如果你的函数真的只需要匹配类型或 None,你可能只是这样做:

def func(result):
   if result:
      # do stuff...

最后,你可能违反了Python 的EAFP 原则。最后一个版本假定 result 是匹配类型,除非出现问题...

def func(result):
    try:
        for group in result.groups():
            # handle match group
    except AttributeError:
       # Looks like this wasn't a real match object
于 2012-10-15T20:28:25.597 回答