Python正则表达式---全部能匹配的子串迭代器finditer及findall及以中文匹配部分中文
2014-04-15 19:55
831 查看
一、正则匹配:findall,finditer
findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):搜索string,以列表形式返回全部能匹配的子串。finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。
<span style="font-size:18px;">#coding:utf-8 import re s='[0-9]{4}年([0-9]{1,2}月)?([0-9]{1,2}日)?' st_1=''' 男,1941年3月生于河北省涿州市; 出生日期:1988年12月15日 出生地:黑龙江省齐齐哈 编辑(1975年——),中国青年 族人,1985年10月13日出生于 陕西 省。 2003年 ''' #-----------------对比findall和finditer------------------- #-------找出字符里面所有的数字 p = re.compile(r'\d+') print p.findall('one1two2three3four4') #------- for m in p.finditer('one1two2three3four4'): print m.group(), #-------找出所有年月日时间 print '' p=re.compile(r'[0-9]{4}年([0-9]{1,2}月)?([0-9]{1,2}日)?') print p.findall(st_1) #------- for m in p.finditer(st_1): print m.group()</span>
二、正则表达式匹配部分中文:
卤主的中文文本是utf-8格式的,想要匹配某个中文到某个中文之间的词,却是弄得很是麻烦,终究发现也是挺简单的:In [3]: import re In [4]: a = u"“你不去我也不去” 王琳佳和叶梦圆手拉手上了飞机(组图)-新闻频道-手机 搜狐" In [5]: p = re.compile(u"图\).*") In [6]: p.findall(a) Out[6]: [u'\u56fe)-\u65b0\u95fb\u9891\u9053-\u624b\u673a \u641c\u72d0']本来应该是: p =re.compile(r"图\).*"),但是正则里面包含中文,需要用u进行编译。
部分参考:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
相关文章推荐
- Python快速学习06:词典
- Python快速学习06:词典
- python调用dll方法
- 用python2.7.6创建我们的helloWorld
- Python封装的访问MySQL数据库的类及DEMO
- selenium2.0关于python的常用函数
- python2.5访问数据库出现中文乱码的问题。
- 写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。文本文件大约是30KB~300KB大小。
- Learning Python
- 【Python脚本】Python创建删除文件-----------我的第一个Python脚本
- python内置对象的一些知识
- python 类继承与子类实例初始化
- Python程序语言快速上手教程
- Python开发——理解With语句
- python简明教程 argv
- Python单元测试框架使用unittestpyUnit
- 如何使用Python3读取配置文件(ini)
- python判断两个文件是否相同
- Python学习(3)——if语句
- mac os下Python模块安装错误