正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
re 模块使 Python 语言拥有全部的正则表达式功能。
本文介绍Python中常用的正则表达式处理函数。
方法:
- split(pattern,string):按照规则将字符串内容分割,返回一个列表
示例:
s = "dhj5sskk8hho"
#使用至少一个数字分割字符串
s1 =re.split("\d+",s)
print(s1)
执行结果:
- sub(pattern,repl,string):按照规则将字符串中匹配的内容替换成repl,返回一个新字符串
示例:
# 将字符串中的数字替换为*
s = "dhj5sskk8hho"
s2 = re.sub("\d+","*",s)
print(s2)
执行结果:
- findall(pattern,string,[,控制字符串]): 以列表返回字符串string中与pattern规则匹配的内容,如果为空,则返回空列表
– 控制字符:
re.S: 使元字符.可以匹配包括换行符\n在内的所有字符
re.I:不区分大小写
- 示例1:
#. 匹配换行符\n以外的任意一个字符
ss = "sya\ndhha*7ua5cpA88&"
ss1 = re.findall("a.",ss)
print(ss1)
# 返回字符串中符合规则的内容,包括换行符\n在内的字符;['a\n', 'a*', 'a5']
ss2 = re.findall("a.",ss,re.S)
print(ss2)
# 返回字符串中符合规则的内容,不区分大小写;['a*', 'a5', 'A8']
ss3 =re.findall("a.",ss,re.I)
print(ss3)
执行结果:
示例2:
ss = "sya\ndhha*7ua5cpA88&"
# 返回字符串中符合规则的内容,包括换行符\n在内的字符,并且不区分大小写;['a\n', 'a*', 'a5', 'A8']
ss4 = re.findall("a.",ss,re.S|re.I)
print(ss4)
执行结果:
元字符
. 匹配换行符\n以外的任意一个字符
\w 匹配一个单词字符(字母数字下划线)
示例:
ss = "sya\ndhha*7ua5cpA88&"
# . 匹配换行符\n以外的任意一个字符
ss1 = re.findall("a.",ss)
print(ss1)
# 返回字符串中
执行结果:
sss = "a\ndga06a&9a23a_mn"
sss1 = re.findall("a\w",sss)
print(sss1)
执行结果:
\W 匹配非单词字符
示例:
sss = "a\ndga06a&9a23a_mn"
# \W 匹配非单词字符 ['a\n', 'a&', 'a#']
sss2 =re.findall("a\W",sss)
print(sss2)
执行结果:
\d 匹配数字
示例:
sss = "a\ndga06a&9a23a_mn"
# \d 匹配数字 ['a0', 'a2']
sss3 = re.findall("a\d",sss)
print(sss3)
执行结果:
\dd 匹配2个数字
\D 匹配非数字字符
示例:
sss = "a\ndga06a&9a23a_mn"
# \D 匹配非数字字符 ['a\n', 'a&', 'a_']
sss5 = re.findall("a\D",sss)
print(sss5)
执行结果:
\s 匹配空白字符
示例:
a = "a\ts2a\nwa ta1a&2"
# \s 匹配空白字符 ['a\t', 'a\n', 'a ']
a1 = re.findall("a\s",a)
print(a1)
执行结果:
\S 匹配非空白字符
示例:
a = "a\ts2a\nwa ta1a&2"
# \S 匹配非空白字符 ['a1', 'a&']
a2 = re.findall("a\S",a)
print(a2)
执行结果:
^ 匹配字符串开头
示例:
a = "a\ts2a\nwa ta1a&2"
# ^ 匹配字符串开头 ['a\t']
a3 =re.findall("^a.",a)
print(a3)
执行结果:
$ 匹配字符串结尾
示例:
a = "a\ts2a\nwa ta1a&2"
# $ 匹配字符串结尾 ['2']
a4 = re.findall("\d$",a)
print(a4)
执行结果:
*匹配前一个字符任意次
示例:
aa = "a12a123c67a8da"
# 匹配单词字符开头数字结尾 ,其中数字也是单词字符 ['a1', 'a1', '23', 'c6', 'a8']
aa1 = re.findall("\w\d",aa)
print(aa1)
# 匹配a开头数字结尾,数字可为0个或多个 ['a12', 'a123', 'a8', 'a']
aa2 = re.findall("a\d*",aa)
print(aa2)
执行结果:
+匹配前一个字符至少一次
示例:
aa = "a12a123c67a8da"
# 匹配a开头至少一个数字结尾 ['a12', 'a123', 'a8']
aa3 = re.findall("a\d+",aa)
print(aa3)
执行结果
? 匹配前一个字符0次或者一次
示例:
aa = "a12a123c67a8da"
# 匹配a开头0个或者一个数字结尾 ['a1', 'a1', 'a8', 'a']
aa4 = re.findall("a\d?",aa)
print(aa4)
执行结果:
{n} 匹配前一个字符n次
示例:
aa = "a12a123c67a8da"
# 匹配a开头n个数字结尾 ['a12', 'a12']
aa5 = re.findall("a\d{2}",aa)
print(aa5)
执行结果:
{n,} 匹配前一个字符至少n次
示例:
aa = "a12a123c67a8da"
#匹配a开头至少n个数字结尾 ['a12', 'a123']
aa6 = re.findall("a\d{2,}",aa)
print(aa6)
执行结果:
{n,m} 匹配前一个字符至少n次,最多m次
示例:
aa = "a12a123c67a8da"
#匹配a开头至少n个数字,最多m个数字结尾
aa8 = re.findall("a\d{1,3}",aa)
print("aa8:",aa8)
执行结果:
{,m} 匹配前一个字符最多m次
示例:
# 匹配a开头最多n个数字结尾 ['a12', 'a123', 'a8', 'a']
aa7 = re.findall("a\d{,4}",aa)
print(aa7)
执行结果:
.* 匹配任意字符