python中import re_python中的re模块

python中的正则表达式匹配,可以import re模块来实现。

python中的特殊字符:

1) 量词 *, +, ?, {m}, {m, n} 与perl中类似;

2) 元字符 “.”;

3) 转义字符 “\”;

4) 字符集[],预定义字符集\d,\D,\s,\S,\w,\W

5) 锚位符,^, $, \A, \z, \b, \B

6) 择一匹配,|

7) 分组变量,(...), (?P...)

8) \number 变量引用。

python中的量词默认也是贪婪模式,可在量词*之后,加?,来变为非贪婪模式, “ab*?” 匹配a

匹配的pattern,前加r,表示raw string,主要区别在对转义字符\\,不再做特殊处理。

加r,并不影响\d,\w这样的字符集。

re模块中有定义的function,也可以先编译为一个pattern对象或者match对象,在进行function调用。

re模块可以直接调用的function:

1)re.compile(string, flag),编译产生一个pattern实体。

string,表示匹配的模式pattern;

flag,表示匹配的flag,python定义的有:re.I表示忽略大小写,

re.S改变元字符.的意义,可以任意匹配,包括换行符,

re.X详细模式,pattern字符串可以分行,并且包含注释,

返回为pattern对象,

2)re.match(pattern, string,flag),一次简单的匹配,没有pattern实体被编译出来,只是从字符串的首字符开始匹配,不是line的首字符。

返回值为match对象,

3)re.search(pattern,string,flag),返回的也是一个match对象。匹配不到,返回None。

4)re.split(pattern,string,maxsplit,flags),返回的是分割后的一个字符串的list。

5)re.findall(pattern,string,flags),返回的是一个字符串的list。

6)re.finditer(pattern,string,flags),返回的是一个iterator类型的list。

7)re.sub(pattern,repl,string,count,flag),返回修改之后的string,并不直接修改原字符串。

pattern对象的内部变量与函数:pattern对象不能直接实例化,只能通过compile来产生。

属性:1) pattern,编译时,用的字符串;

2) flags,编译时,用的flag;

3) groups,编译时,的分组数量;

4) groupindex,编译时,有别名的分组字典,别名为键,匹配的字符为值;

方法:1) match(string, pos, endpos),返回一个正常的match对象,可能只是匹配了部分字符,可以在尾部加"$"字符。

2) search(string, pos, endpos),匹配到返回一个match对象,否则返回一个NONE;

3) split(string, maxsplit),返回一个分开后的列表;

p = re.compile(r'\d+')

print p.split('one1two2three3four4') 输出['one', 'two', 'three', 'four']

4) findall(string, pos, endpos),以列表的形式,返回全部匹配的字符串,一个列表元素,其中包含一个元组;

p = re.compile(r'\d+')

print p.findall('one1two2three3four4') 输出['1', '2', '3', '4']

5) finditer(string, pos, endpos),按顺序返回一个iterator的迭代器;

6) sub(repl, string, count),替代操作,并不会直接修改原字符串,返回替换之后的字符串,

p = re.compile(r'(\w+) (\w+)')

s = 'i say, hello world!'

print p.sub(r'\2 \1', s) 返回sayi, world hello!

7) subn(repl, string, count),返回list和替换次数;

match对象的内部变量与函数:

属性:1) string:匹配时使用的文本;

2) re:匹配时使用的pattern对象;

3) pos:文本中正则表达式开始搜索的索引;

4) endpos:文本中正则表达式结束搜索的索引;

5) lastindex:最后一个被捕获的分组的索引;

6) lastgroup:最后一个被捕获的分组的别名,没有,则为none;

方法:1) group(1..n),返回一个或多个分组变量;

2) groups(),返回全部的分组变量;数据结构是一个list

3) groupdict(),返回有别名的分组变量的字典;

4) start(),end(),span,返回某个分组变量的字符起始字符个数;

当re中输入string为变量时,可以使用%格式化打印

a= ‘hym’

s = re.compile("%s" % (a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值