Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的正则表达式,不确定我做错了什么_Python_Regex_Urllib_Findall - Fatal编程技术网

python中的正则表达式,不确定我做错了什么

python中的正则表达式,不确定我做错了什么,python,regex,urllib,findall,Python,Regex,Urllib,Findall,我是Python新手,在我决定在这里问一个问题之前,我做了很多研究。问题是: 我不确定我的正则表达式有什么问题。我想尝试一下re.findall(),所以我想写一个小脚本,可以在网页上找到电话号码。这是我现在掌握的代码 import re, urllib inurl = raw_input("Input a URL: ") web = urllib.urlopen(inurl) web.readlines() numbers = re.findall("

我是Python新手,在我决定在这里问一个问题之前,我做了很多研究。问题是:

我不确定我的正则表达式有什么问题。我想尝试一下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)

提前感谢。

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

另外,我认为您希望在findall中使用输出/响应,而不仅仅是web,这就是为什么您会看到
预期的字符串或缓冲区
。您还应该删除只执行
web.readlines()

所以你可能想做的事情如下:

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

我想你需要放下前斜杠,gyou刚刚解决了我的问题,就是这样。非常感谢你。我用了一个正则表达式生成器。我不知道红宝石在里面。非常感谢。我有个问题。我以为readlines()会读取所有行,然后将其放入列表中。。。还是我错过了doc.python.org上的阅读?哈哈,我会重新阅读文档,再次感谢!
"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}"