关于正则表达式基本语法请参考之前发过的文章,正则表达式扩展语法的高级用法后面会专门整理后再发。

Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法(见下表)来处理字符串。

方法

功能说明

compile(pattern[,flags])

创建模式对象

escape(string)

将字符串中所有特殊正则表达式字符转义

findall(pattern,string[,flags])

列出字符串中模式的所有匹配项

finditer(pattern, string, flags=0)

返回包含所有匹配项的迭代对象,其中每个匹配项都是match对象

fullmatch(pattern, string, flags=0)

尝试把模式作用于整个字符串,返回match对象或None

match(pattern,string[,flags])

从字符串的开始处匹配模式python字符串查找,返回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替换,返回包含新字符串和替换次数的二元元组python字符串查找,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’) #字符串转义

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688