RegEx在python中,不确定我做错了什么

时间:2011-10-11 02:57:24

标签: python regex urllib findall

我对Python很陌生,在我决定在这里问一个问题之前,我尽可能多地研究。所以这就是问题所在:

我不确定我的RegEx出了什么问题。我想尝试re.findall(),所以我想我会写一个小脚本,可以在网页上找到电话号码。这是我现在的代码。

    import re, urllib
    inurl = raw_input("Input a URL: ")
    web = urllib.urlopen(inurl)
    web.readlines()

    numbers = re.findall("/\d{3}.\d{3}.\d{4}/g", web)
    for itm in numbers
        print itm

不确定发生了什么。我一直得到<期望字符串或缓冲区“的错误

    numbers = re.findall(".....", web)

提前致谢。

2 个答案:

答案 0 :(得分:3)

/\d{3}.\d{3}.\d{4}/g - /../部分用于识别其他语言中的正则表达式,如Ruby,g是一个标志,也不适用于Python。尝试删除它们并仅使用\d{3}.\d{3}.\d{4}

另外我认为你想在findall而不仅仅是web中使用输出/响应,这就是你看到expected string or buffer的原因。您还应该删除刚刚执行web.readlines()

的行

所以你可能想做的事情就是这样:

numbers = re.findall("\d{3}.\d{3}.\d{4}", web.read())

答案 1 :(得分:0)

"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}"