正则表达式通常用来匹配和搜索
特殊字符:
. 匹配任意单个字符 除去
import re
myname = "my name is
xiaofan!"
m=re.findall(r'.',myname)
print(m)
['m', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', 'x', 'i', 'a', 'o', 'f', 'a', 'n', '!']
* 匹配前面子表达式的 0次到多次 (贪婪)
import re
myname = "my name is
xiaofan!"
m=re.findall(r'my*',myname)
print(m)
['my', 'm']
? 屁前面的表达式 0次到1次 (贪婪)
import re
myname = "xiaoo"
m=re.findall(r'o?',myname)
print(m)
['', '', '', 'o', 'o', '']
+ 匹配前的表达式 1次到多次 (贪婪)
import re
myname = "xiaoo ao o tt "
m=re.findall(r'o+',myname)
print(m)
['oo', 'o', 'o']
^ 开头
$ 结尾
import re
name="xiaofan fanf"
m=re.findall(r'^x',name)
m1=re.findall(r'^x.*f$',name)
m2=re.findall(r'f$',name)
print(m)
print(m1)
print(m2)
['x']
['xiaofan fanf']
['f']
(......) 匹配括号里面的内容可以用 来调用
w 匹配所有的字母数字下划线
W 匹配所有的非数字字母下划线
d 匹配所有的数字
D 匹配所有的非数字
s 匹配空白字符
S 匹配非空白字符
import re
name="xiaofan123!@# "
m=re.findall(r'w',name)
m1=re.findall(r'W',name)
m2=re.findall(r'd',name)
m3=re.findall(r'D',name)
m4=re.findall(r's',name)
m5=re.findall(r'S',name)
print(m)
print(m1)
print(m2)
print(m3)
print(m4)
print(m5)
['x', 'i', 'a', 'o', 'f', 'a', 'n', '1', '2', '3']
['!', '@', '#', ' ']
['1', '2', '3']
['x', 'i', 'a', 'o', 'f', 'a', 'n', '!', '@', '#', ' ']
[' ']
['x', 'i', 'a', 'o', 'f', 'a', 'n', '1', '2', '3', '!', '@', '#']
[a-z] 小写字母
[A-Z] 大写字母
[a-zA-Z] 大小写字母
import re
name="XiaoFan"
m=re.findall(r'[a-z]',name)
m1=re.findall(r'[A-Z]',name)
m2=re.findall(r'[a-zA-Z]',name)
print(m)
print(m1)
print(m2)
['i', 'a', 'o', 'a', 'n']
['X', 'F']
['X', 'i', 'a', 'o', 'F', 'a', 'n']
| 匹配 | 两边的任意一种字符
[^] 匹配非括号当中的字符
import re
name="XiaooFann"
m=re.findall(r'a|o',name)
m1=re.findall(r'[^A-Z]',name)
print(m)
print(m1)
['a', 'o', 'o', 'a']
['i', 'a', 'o', 'o', 'a', 'n', 'n']
['o', 'o']
{m,n} 匹配出现m~n 次的
{n} 匹配出现n次的
import re
name="aaabaaca"
m=re.findall(r'a{1,2}',name)
m1=re.findall(r'a{2}',name)
print(m)
print(m1)
['aa', 'a', 'aa', 'a']
['aa', 'aa']
re.S 修改.的匹配模式,让.可以匹配到
re.M 修改 的匹配方式
re.l 忽略大小写
re.findall 从指定的字符串中匹配所有满足正在描述的问题,返回列表
re.search 从字符串中匹配一次指定规则
re.match 从字符串中开头匹配一次指定的规则
re.compile 形成正则模型
re.sub 替换,和replace相似
re.split 分隔,和字符串的split相似
import re
test="daadaad"
t1=re.search(r'a',test)
t2=re.match(r'a',test)
print(t1)
print(t1.group())
print(t2)
<_sre.SRE_Match object; span=(1, 2), match='a'>
a
None
tt=re.sub(r'^x','X',"xiaofan")
print(tt)
Xiaofan
t=re.split('-','xiao-fan')
print(t)
['xiao', 'fan']