模块:re (系统模块)
方法:
(1)split(pattern,string),使用字符串中与pattern规则匹配的内容进行分隔,返回一个列表
pattern:正则表达
string: 待处理的字符串
示范代码:
import re
s = "fgh567asd9omn"
r=re.split('\d+',s) #使用至少1个数字分隔,将字符串转换为列表 ["fgh","asd","mn"J
print(r)
(2)sub(pattern,repl,string),将字符串与pattern规则匹配的内容进行替换(替换成repl),返回一个新字符。
pattern:正则表达式
repl:新内容
string: 待处理的字符串
示范代码:
import re
S='fgh567asd90mn'
r=re.sub('\d','*',s) #将字符串中的数字替换为*
print(r)
结果如图
(3)findall(pattern, string[,控制字符]),以列表返回字符串中与pattern 规则匹配的内容,如果没有匹配的则返回空列表
pattern: 正则表达式
string: 待处理的字符串
控制字符:
re.S,使元字符。可以匹配包括换行符\n在内的所有字符
re.I,忽略大小写
import re
s ='a\nfga$h56a7asdA90mn '
r = re.findall('a.',s) #找出字符串中a开头,长度为2的子字符串
print(r)
r = re.findall('a.',s,re.S) #找出字符串中a开头,长度为2的子字符串,包括a\n
print(r)
r = re.findall('a.',s,re.S|re.I) #找出字符串中a开头,长度为2的子字符串,不区分大小写
print(r)
结果如图
(4)元字符
1.
\w,匹配一个单词字符(字母,数字,下划线)
\W,匹配一个 非单词字符
import re
s ='a\nfga$h56a7asdA90mn '
r = re.findall('a\w',s,re.s|re.I) #匹配单词字符
print(r)
r = re.findall('a\W',s,re.S|re.I) #匹配非单词字符
print(r)
结果如图
2.
\d,匹配一个数字字符
\D,匹配一个非数字字符
import re
s ='a\nfga$h56a7asdA90mn '
r = re.findall('a\d\d',s,re.s|re.I) #匹配数字字符
print(r)
r = re.findall('a\D',s,re.S|re.I) #匹配非数字字符
print(r)
结果:
3.
\s,匹配一个空白字符
\S,匹配一个非空白字符
import re
s ='a\nfga$h56a7asdA90mna\tba 123'
r = re.findall('a\s',s,re.s|re.I) #匹配数字字符
print(r)
r = re.findall('a\S',s) #匹配非数字字符
print(r)
结果:
4.
●.,匹配除换行符\n以外的任意一个字符
●^,匹配字符串开头
●$,匹配字符串结尾
import re
s ='a\nfga$h56a7asdA90mna\tba 123'
r = re.findall('^a.',s,re.s|re.I) #匹配以a开头
print(r)
r = re.findall('\d$',s) #匹配以数字结尾
print(r)
●*,匹配前一个字符任意次
ab* -——a、ab、abb、 abbbbb
●+,匹配前一个字符至少1次
ab+ -——ab、abb、 abbbbbb
?,匹配前一个字符0次或者1次
●ab?-——ab、a
●{n},匹配前一个字符n次
ab{3} ——abbb
●{n,},匹配前一一个字符至少n次
ab{3,} —— abbb、abbbb
●{n,m},匹配前一个字符至少n次,最多m次
ab{1,3} ——abbb、abb、ab
●{,m},匹配前一个字符最多m次
●ab{,3} ——abbb、 abb、ab、a
import re
s='a12a123a4567a9fasd'
r : re.findall('a\d*' ,s)print(r)
r = re.findall( 'a\d+' ,s)print(r)
r = re.findall('a\d?',s)print(r)
r = re. findall('a\d{3}',s)print(r)
r = re.findall('a\d{3,}',s)print(r)
r = re.findall('a\d{2,4}',s)print(r)
r = re.findall('a\d{,4}',s)print(r)