关于正则表达式基本语法请参考之前发过的文章,正则表达式扩展语法的高级用法后面会专门整理后再发。
Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法(见下表)来处理字符串。
方法
功能说明
compile(pattern[,flags])
创建模式对象
escape(string)
将字符串中所有特殊正则表达式字符转义
findall(pattern,string[,flags])
列出字符串中模式的所有匹配项
finditer(pattern, string, flags=0)
返回包含所有匹配项的迭代对象python字符串find,其中每个匹配项都是match对象
fullmatch(pattern, string, flags=0)
尝试把模式作用于整个字符串python字符串find,返回match对象或None
match(pattern,string[,flags])
从字符串的开始处匹配模式,返回match对象或None
purge()
清空正则表达式缓存
search(pattern,string[,flags])
在整个字符串中寻找模式,返回match对象或None
split(pattern,string[,maxsplit=0])
根据模式匹配项分隔字符串
sub(pat,repl,string[,count=0])
将字符串中所有pat的匹配项用repl替换,返回新字符串,repl可以是字符串或返回字符串的可调用对象,该可调用对象作用于每个匹配的match对象
subn(pat,repl,string[,count=0])
将字符串中所有pat的匹配项用repl替换,返回包含新字符串和替换次数的二元元组,repl可以是字符串或返回字符串的可调用对象,该可调用对象作用于每个匹配的match对象
其中函数参数“flags”的值可以是re.I(注意是大写字母I,不是数字1,表示忽略大小写)、re.L(支持本地字符集的字符)、re.M(多行匹配模式)、re.S(使元字符“.”匹配任意字符,包括换行符)、re.U(匹配Unicode字符)、re.X(忽略模式中的空格,并可以使用#注释)的不同组合(使用“|”进行组合)。
下面的代码演示了直接使用re模块中的方法和正则表达式处理字符串的用法,其中match()函数用于在字符串开始位置进行匹配,而search()函数用于在整个字符串中进行匹配,这两个函数如果匹配成功则返回match对象,否则返回None。
>>> import re #导入re模块
>>> text = ‘alpha. beta….gamma delta’ #测试用的字符串
>>> re.split(‘[. ]+’, text) #使用指定字符作为分隔符进行分隔
[‘alpha’, ‘beta’, ‘gamma’, ‘delta’]
>>> re.split(‘[. ]+’, text, maxsplit=2)#最多分隔2次
[‘alpha’, ‘beta’, ‘gamma delta’]
>>> re.split(‘[. ]+’, text, maxsplit=1)#最多分隔1次
[‘alpha’, ‘beta….gamma delta’]
>>> pat = ‘[a-zA-Z]+’
>>> re.findall(pat, text) #查找所有单词
[‘alpha’, ‘beta’, ‘gamma’, ‘delta’]
>>> pat = ‘{name}’
>>> text = ‘Dear {name}…’
>>> re.sub(pat, ‘Mr.Dong’, text) #字符串替换
‘Dear Mr.Dong…’
>>> s = ‘a s d’
>>> re.sub(‘a|s|d’, ‘good’, s)#字符串替换
‘good good good’
>>> s = “It’s a very good good idea”
>>> re.sub(r'(bw+) 1′, r’1′, s)#处理连续的重复单词
“It’s a very good idea”
>>> re.sub(‘a’, lambda x:x.group(0).upper(), ‘aaa abc abde’) #repl为可调用对象
‘AAA Abc Abde’
>>> re.sub(‘[a-z]’, lambda x:x.group(0).upper(), ‘aaa abc abde’)
‘AAA ABC ABDE’
>>> re.sub(‘[a-zA-z]’, lambda x:chr(ord(x.group(0))^32), ‘aaa aBc abde’) #英文字母大小写互换
‘AAA AbC ABDE’
>>> re.subn(‘a’, ‘dfg’, ‘aaa abc abde’) #返回新字符串和替换次数
(‘dfgdfgdfg dfgbc dfgbde’, 5)
>>> re.sub(‘a’, ‘dfg’, ‘aaa abc abde’)
‘dfgdfgdfg dfgbc dfgbde’
>>> re.escape(‘http://www.python.org’) #字符串转义
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99