您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: