什么是学习笔记?
你在学习中想写的批注、摘抄及随感。
正则表达式常用函数, 正则表达式 第三节
如何在python中使用正则表达式
re模块提供了一个正则表达式引擎的接口
可以将正则表达式编译成一个对象
如何一个表达式要经常使用,则可以编译为对象
import re
r1 = r"\d{3,4}-?\d{8}"
re.findall(r1,'010-12345678') //直接匹配
如果r1经常用,则可进行编译
p_tel = re.compile(r1)
p_tel <为正则对象>
p_tel.findall('010-12345678')
['010-12345678']
编译后的正则比未编译的正则匹配的要快
任何一个表达式都可以进行进行,并且进行标记
csvt_re = re.compilr(r'CcSsVvTt')//匹配csvt,不区分大小写
csvt_re = re.compilr(r'csvt',re.I) //同上
csvt_re.findall('CSvt') //csvt csVT均可匹配
加入属性让匹配更灵活
常用方法
match() 决定RE是否在字符刚开始的位置匹配
search()扫描字符串,找到这个RE匹配的位置
findall() 找到RE匹配的所有子串,并把他们作为列表返回
finditer()找到RE匹配的左所有子串并把他们作为迭代器返回
csvt_re.match('csvt hello')
有相应的对象,则返回对象 csvt要在开头
没有则为空
一般用来判断是否匹配成功
x = csvt_re.mach...
if x ...
search()不管要匹配的字符串在什么位置均会有返回,匹配成功返回对象
csvt_re.findall('hello csvt hello csvt csvt')
['csvt', 'csvt', 'csvt']
csvt_re.finditer(' .....')
翻译迭代器对象
x.next() 返回match类型的对象
match对象方法
group返回已匹配的字符串
x.group()
'csvt' //返回字符串 一般值用来判断匹配是否成功
模块级函数
re模块也提供了顶级函数调用
sub() 子串 在字符串中截取子串
help(re.sub)
s = ’hello csvt '
s.replace('csvt', 'python') //把csvt替换为python
s.replace(r'c..t', 'python')
'hello csvt' //匹配不管用
rs = r'c..t'
re.sub(rs, 'python' , 'csvt caat cvvt cccc') //用rs规则在后面的字符串中把c..t替换为python
['python python python cccc‘]
re.subn(rs, 'python' , 'csvt caat cvvt cccc')
['python python python cccc', 3] //匹配次数 3
split() 切割
ip = "1.2.3.4"
ip.split('.')
['1', '2', ..]
s = "123+456-789*000" //如何对多个符号进行分割
re.split(r'[\+\-\*]', s)
['123', '456', '789', '000']