python中使用 re模块实现对正则表达式的使用方式
实现方式包括 2种
1 re是一个引用模块,类似与其他的模块的使用,可以直接进行调取模块中的功能函数使用。
例如:
print re.split(r'\d+','one1two2three3four4')
得到的结果:
['one', 'two', 'three', 'four', '']
split语法:
split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。
此处使用的是第二种语法结构:re.split(pattern, string[, maxsplit])
说明:pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
正则表达式中r 表示的是Python 代码中的 Raw 字符串,在字符串前加个 “r” 反斜杠就不会被任何特殊方式处理,所以 r”\n” 就是包含”\” 和 “n” 的两个字符,而 “\n” 则是一个字符,表示一个换行。
如何使用第一种语法?
这就是利用re模块提供的正则表达式对象,即第2种方法
2 使用compile 函数生成一个正则表达式对象。该对象能够通过一些方法(函数)进行正则表示式处理操作。
具体流程可类似如下所示(来源于网上,当然含包括除匹配之外的类似搜索,替换等处理):
因此对于 1 中的实例,还可以通过一下方法进行实现:
p = re.compile(r'\d+')
print p.split('one1two2three3four4')
第一行是将正则表达式编译为Pattern对象
第二行是调用对象的方法
所以,在使用python的正则表达式时,可以采取以上任意一种方法。当然,第二种方式可以重复使用,灵活性大。
说明:由于此处只介绍python正则表达式的使用思路,所以更多有关的,具体的语法,语句可以参考相关材料。
python简单爬虫实现
此处简单实现爬虫实例,主要简述思路:包括,抓取网页,数据获取。
import re
import urllib
def getHtml(url):
page=urllib.urlopen(url)
html=page.read()
return html
def getImg(html):
reg=r'src="(.+?\.jpg)"'
imgre=re.compile(reg)
imglist=re.findall(imgre,html)
return imglist
html=getHtml("http://tieba.baidu.com/p/2460150866")
print(getImg(html))
此源码来源 http://www.cnblogs.com/fnng/p/3576154.html
分别使用到获取url的库urllib以及正则表达式模块。正则表达式使用的是第二种语法结构。
说明: 以上使用的是python2.7。
还有一个获取url的库urllib2,但在python3.x中两者合并为 urllib。所以导入模块改为:
import urllib
import urllib.request
上述程序中的urllib应该改为
urllib.request
(现在有更高版本的urllib,进一步简化了程序语句)
以上程序抓取的结果是一些图片的链接。