python正则表达式函数不起作用

时间:2016-02-18 12:42:33

标签: python regex function

我正在学习python,所以对于很多人来说这可能是一个简单的问题,我希望能帮助你理解出错的地方。

我正在尝试创建一个在文本中搜索电话号码的功能。

    import re

def findPhoneNumber(a):
    b = re.compile(r'\d{3}-\d{3}-\d{4}')
    c = b.search(a)
    return c.group()

findPhoneNumber('123')

我收到此错误: AttributeError:' NoneType'对象没有属性' group'

因此,根据我的理解,c变量没有获得任何关联的值,因此返回此错误。

有谁能解释我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

您的示例“123”与任何电话号码都不匹配,您需要“123-456-7890”。

所以在你的例子中c==None。在尝试访问c之前,您必须先测试if(c)是否为c.group()的实际匹配对象

答案 1 :(得分:2)

如果你的正则表达式与c不匹配,None会给你下一个例外:

AttributeError: 'NoneType' object has no attribute 'group'

您只需要处理该异常

def findPhoneNumber(a):
    try:
        return re.search(r'\d{3}-\d{3}-\d{4}', a).group()
    except AttributeError:
        return None

在函数内部编译正则表达式只使用一次

也没什么意义