正则表达式常用操作符
上来先给两个常用的表:
re模块下的函数
compile(pattern)创建模式对象
import re
pat
=re
.compile("A")
m
=pat
.search
("ABC")
print(m
) 输出
:<re
.Match
object; span
=(0, 1), match
='A'>
search(pattern,string)在字符串中寻找模式
m
=re
.search
('asd','ASDasd')
输出
:<re
.Match
object; span
=(3, 6), match
='asd'>
m
=re
.search
("asd","ASDASD")
输出
:None
match(pattern,string)在字符串开始处匹配模式
pat
=re
.compile("a")
print(pat
.search
("Aasd"))
print(pat
.match
("aASD"))
if pat
.search
("asd"):
print("ok")
if re
.search
("a","ASD"):
print("ok")
输出:
<re
.Match
object; span
=(1, 2), match
='a'>
<re
.Match
object; span
=(0, 1), match
='a'>
ok
split(pattern,string)根据模式分割字符串,返回列表
re
.split
(' ',', a, s, d,asd')
输出:
[',', 'a,', 's,', 'd,asd']
pat
=re
.compile(',')
pat
.split
('a,s,d,asd')
输出:
['a', 's', 'd', 'asd']
re
.split
('[,]+','a, s, d ,,,,,,asd')
输出:
['a', ' s', ' d ', 'asd']
re
.split
('[,]+','a, s, d ,,,,,,asd',maxsplit
=1)
输出:
['a', ' s, d ,,,,,,asd']
re
.split
('[,]+','a, s, d ,,,,,,asd',maxsplit
=2)
输出:
['a', ' s', ' d ,,,,,,asd']
findall(pattern,string)列表形式返回匹配项
import re
print(re
.findall
('a','ASDaDFGAa'))
pat
=re
.compile('[A-Z]+')
print(pat
.findall
('ASDaDFGAa'))
pat
=re
.compile('[A-Z]')
print(pat
.findall
('ASDaDFGAa'))
pat
=re
.compile('[A-Za-z]')
print(pat
.findall
('ASDaDFGAa'))
输出:
['a', 'a']
['ASD', 'DFGA']
['A', 'S', 'D', 'D', 'F', 'G', 'A']
['A', 'S', 'D', 'a', 'D', 'F', 'G', 'A', 'a']
sub(pat,repl,string)用repl替换pat匹配项
print(re
.sub
('a','A','abcasd'))
pat
=re
.compile('a')
print(pat
.sub
('A','abcasd'))
pat
=re
.compile(r
'www.(.*)..{3}')
print(pat
.match
('www.dxy.com').group
(1))
print(re
.sub
(r
'www.(.*)..{3}','r','hello,www.dxy.com'))
输出:
AbcAsd
AbcAsd
dxy
hello
,r
group获取子模式的匹配项
import re
a
= "123abc456"
print(re
.search
("([0-9]*)([a-z]*)([0-9]*)",a
).group
(0))
print(re
.search
("([0-9]*)([a-z]*)([0-9]*)",a
).group
(1))
print(re
.search
("([0-9]*)([a-z]*)([0-9]*)",a
).group
(2))
print(re
.search
("([0-9]*)([a-z]*)([0-9]*)",a
).group
(3))
输出:
123abc456
123
abc
456
"."通配符,除换行符外的任意的一个字符
pat
=re
.compile('.')
print(pat
.match
('abc'))
输出:
<re
.Match
object; span
=(0, 1), match
='a'>
print(pat
.match
('abc').group
())
输出:a
print(pat
.search
('abc').group
())
输出:a
pat
=re
.compile('.')
print(pat
.search
('abc.efg').group
())
print(pat
.findall
('abc.efg'))
输出:
a
['a', 'b', 'c', '.', 'e', 'f', 'g']
[…]字符集合,匹配里面的任意一个元素
pat
=re
.compile('[abc]')
print(pat
.match
('axbycz').group
())
print(pat
.search
('axbycz').group
())
print(pat
.findall
('axbycz'))
输出:
a
a
['a', 'b', 'c']
\d 数字
pat
=re
.compile('\d')
print(pat
.search
('ax1by2cz3').group
())
print(pat
.findall
('ax1by2cz3'))
输出:
1
['1', '2', '3']
\D 数字
pat
=re
.compile('\D')
print(pat
.search
('ax1by2cz3').group
())
print(pat
.findall
('ax1by2cz3'))
输出:
a
['a', 'x', 'b', 'y', 'c', 'z']
转载请注明原文地址:https://ipadbbs.8miu.com/read-5782.html