正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

re 模块使 Python 语言拥有全部的正则表达式功能。

本文介绍Python中常用的正则表达式处理函数。

python中间正则 正则 python_python

方法:

  • split(pattern,string):按照规则将字符串内容分割,返回一个列表
    示例:
s = "dhj5sskk8hho"
#使用至少一个数字分割字符串
s1 =re.split("\d+",s)
print(s1)
执行结果:

python中间正则 正则 python_python_02

  • sub(pattern,repl,string):按照规则将字符串中匹配的内容替换成repl,返回一个新字符串
    示例:
# 将字符串中的数字替换为*
s = "dhj5sskk8hho"
s2 = re.sub("\d+","*",s)
print(s2)
执行结果:

python中间正则 正则 python_开发语言_03

  • 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)
执行结果:

python中间正则 正则 python_开发语言_04


示例2:

ss = "sya\ndhha*7ua5cpA88&"
# 返回字符串中符合规则的内容,包括换行符\n在内的字符,并且不区分大小写;['a\n', 'a*', 'a5', 'A8']
ss4 = re.findall("a.",ss,re.S|re.I)
print(ss4)
执行结果:

python中间正则 正则 python_python_05

元字符

. 匹配换行符\n以外的任意一个字符

\w 匹配一个单词字符(字母数字下划线)
示例:

ss = "sya\ndhha*7ua5cpA88&"
# . 匹配换行符\n以外的任意一个字符
ss1 = re.findall("a.",ss)
print(ss1)
# 返回字符串中
执行结果:

python中间正则 正则 python_正则表达式_06

sss = "a\ndga06a&9a23a_mn"
sss1 = re.findall("a\w",sss)
print(sss1)
执行结果:

python中间正则 正则 python_字符串_07


\W 匹配非单词字符

示例:

sss = "a\ndga06a&9a23a_mn"
# \W 匹配非单词字符   ['a\n', 'a&', 'a#']
sss2 =re.findall("a\W",sss)
print(sss2)
执行结果:

python中间正则 正则 python_字符串_08


\d 匹配数字

示例:

sss = "a\ndga06a&9a23a_mn"
# \d 匹配数字  ['a0', 'a2']
sss3 = re.findall("a\d",sss)
print(sss3)
执行结果:

python中间正则 正则 python_字符串_09


\dd 匹配2个数字

\D 匹配非数字字符

示例:

sss = "a\ndga06a&9a23a_mn"
# \D 匹配非数字字符 ['a\n', 'a&', 'a_']
sss5 = re.findall("a\D",sss)
print(sss5)
执行结果:

python中间正则 正则 python_正则表达式_10


\s 匹配空白字符

示例:

a = "a\ts2a\nwa ta1a&2"
# \s 匹配空白字符  ['a\t', 'a\n', 'a ']
a1 = re.findall("a\s",a)
print(a1)
执行结果:

python中间正则 正则 python_正则表达式_11


\S 匹配非空白字符

示例:

a = "a\ts2a\nwa ta1a&2"
# \S 匹配非空白字符  ['a1', 'a&']
a2 = re.findall("a\S",a)
print(a2)
执行结果:

python中间正则 正则 python_python_12


^ 匹配字符串开头

示例:

a = "a\ts2a\nwa ta1a&2"
# ^ 匹配字符串开头 ['a\t']
a3 =re.findall("^a.",a)
print(a3)
执行结果:

python中间正则 正则 python_python_13


$ 匹配字符串结尾

示例:

a = "a\ts2a\nwa ta1a&2"
# $ 匹配字符串结尾  ['2']
a4 = re.findall("\d$",a)
print(a4)
执行结果:

python中间正则 正则 python_开发语言_14


*匹配前一个字符任意次

示例:

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)
执行结果:

python中间正则 正则 python_开发语言_15


+匹配前一个字符至少一次

示例:

aa = "a12a123c67a8da"
# 匹配a开头至少一个数字结尾 ['a12', 'a123', 'a8']
aa3 = re.findall("a\d+",aa)
print(aa3)
执行结果

python中间正则 正则 python_开发语言_16


? 匹配前一个字符0次或者一次

示例:

aa = "a12a123c67a8da"
# 匹配a开头0个或者一个数字结尾  ['a1', 'a1', 'a8', 'a']
aa4 = re.findall("a\d?",aa)
print(aa4)
执行结果:

python中间正则 正则 python_python中间正则_17


{n} 匹配前一个字符n次

示例:

aa = "a12a123c67a8da"
# 匹配a开头n个数字结尾  ['a12', 'a12']
aa5 = re.findall("a\d{2}",aa)
print(aa5)
执行结果:

python中间正则 正则 python_正则表达式_18


{n,} 匹配前一个字符至少n次

示例:

aa = "a12a123c67a8da"
#匹配a开头至少n个数字结尾  ['a12', 'a123']
aa6 = re.findall("a\d{2,}",aa)
print(aa6)
执行结果:

python中间正则 正则 python_开发语言_19


{n,m} 匹配前一个字符至少n次,最多m次

示例:

aa = "a12a123c67a8da"
#匹配a开头至少n个数字,最多m个数字结尾  
aa8 = re.findall("a\d{1,3}",aa)
print("aa8:",aa8)

执行结果:

python中间正则 正则 python_字符串_20


{,m} 匹配前一个字符最多m次

示例:

# 匹配a开头最多n个数字结尾  ['a12', 'a123', 'a8', 'a']
aa7 = re.findall("a\d{,4}",aa)
print(aa7)
执行结果:

python中间正则 正则 python_正则表达式_21


.* 匹配任意字符