python中的正则表达式,不确定我做错了什么
我是Python新手,在我决定在这里问一个问题之前,我做了很多研究。问题是: 我不确定我的正则表达式有什么问题。我想尝试一下re.findall(),所以我想写一个小脚本,可以在网页上找到电话号码。这是我现在掌握的代码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("
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}"