如何在python中匹配/辩论/ days / views / 908

时间:2014-10-25 18:24:02

标签: python regex

我正在尝试匹配/debate/days/views/(here should be 3 digits)/debate/days/views/980/debate/days/views/888将匹配,但/debate/days/views/foo不匹配 这是我试过的正则表达式,但不起作用:

re.search(r'/debate/days/views/\d\d\d', href).group(0)

这是错误消息:

  

AttributeError:'NoneType'对象没有属性'group'

有谁能告诉我如何解决它?

2 个答案:

答案 0 :(得分:3)

当RE不匹配时,re.search会返回None,而不是匹配对象,因此您无法使用.group()。你必须首先测试它是否成功:

found = re.search(r'/debate/days/views/\d\d\d', href)
if found:
    print found.group(0)

答案 1 :(得分:0)

您的表达式一度与href不匹配,并返回None,当然没有.group方法。 Just use try ... except to handle this case

try:
    re.search(r'/debate/days/views/\d\d\d', href).group(0)
except ValueError:
    print "No match found for '{}'".format(href)