在python中查找正则表达式类型

时间:2012-10-15 20:26:40

标签: python regex

  

可能重复:
  Check if a variable is SRE_Match

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

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

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

然而,我永远无法打印出来。当我打印结果时,我得到:

<_sre.SRE_Match object at 0x7fed5330>

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

1 个答案:

答案 0 :(得分:2)

将第一行更改为:

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

目前,您将re_type设置为正则表达式的类型,而不是通过应用正则表达式来输入的匹配。

另请注意,如果没有匹配项,re模块将返回None,因此如果您的函数实际上只需要匹配类型或None,那么您可能只会这样做:

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

最后,您可能违反了Python的EAFP principle。最后一个版本假设结果是匹配类型,除非有什么中断...

def func(result):
    try:
        for group in result.groups():
            # handle match group
    except AttributeError:
       # Looks like this wasn't a real match object