千家信息网

Python正则表达式有几种函数

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"Python正则表达式有几种函数",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python正则表达式有几种函数"这篇文章吧。Py
千家信息网最后更新 2026年11月04日Python正则表达式有几种函数

这篇文章主要为大家展示了"Python正则表达式有几种函数",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python正则表达式有几种函数"这篇文章吧。

Python正则表达式是简介表达一组字符串的表达式,正则表达式可以方便的检查一个字符串是否与某种模式匹配。有六种在正则表达式中的常见函数,分别是re.match、re.search、re.findall、re.compile、re.split和re.sub。

re.match() tch函数从头开始匹配,如果不是起始位置匹配成功的话,match函数的匹配结果就为none。

re.search() 整个字符串,并返回第一个成功的匹配

re.findall() 整个字符串,返回一个list(最常用的)

re.compile() #compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象

re.split() #将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型

re.sub() #在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

1、re.match函数

match函数从头开始匹配,如果不是起始位置匹配成功的话,match函数的匹配结果就为none。匹配成功,re.match方法返回一个匹配的对象。

语法如下:re.match(pattern, string, flags=0)

pattern:需要匹配的正则表达式;

string:在那个字符串中就行匹配 ;

flags:标志位(默认为0),它可以控制正则表达式的匹配方式

常见的flags如下:

re.I 忽略匹配时的大小写

re.M 多行匹配,影响 ^ 和 $

re.S . 默认不匹配换行,使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B

示例如下:

我们可以看出,match函数匹配成功的话,re.match方法返回一个匹配的对象,而不是匹配的正则表达式;通过span()可以获取匹配的位置。

>>> import re

>>> astr='11you are 3344 my apple\n 11开心果,you\n66a77'

>>> re.match('11',astr)

<_sre.SRE_Match object; span=(0, 2), match='11'>

>>> re.match('11',astr).span()

(0, 2)

>>> print(re.match('you',astr))

None

2、re.search函数

搜索整个字符串,并返回第一个成功的匹配。

语法如下:re.search(pattern, string, flags=0)

pattern:需要匹配的正则表达式;

string:在那个字符串中就行匹配 ;

flags:标志位(默认为0),它可以控制正则表达式的匹配方式

常见的flags如下:

re.I 忽略匹配时的大小写

re.M 多行匹配,影响 ^ 和 $

re.S . 默认不匹配换行,使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B

示例如下:

我们可以看出,search函数匹配成功的话,re.search方法返回一个匹配的对象,而不是匹配的正则表达式;通过span()可以获取匹配的位置。如果没有匹配到,则返回为None。

>>> import re

>>> astr='11you are 3344 my apple\n 11开心果,you\n66a77'

>>> re.search('11',astr)

<_sre.SRE_Match object; span=(0, 2), match='11'>

>>> re.search('you',astr)

<_sre.SRE_Match object; span=(2, 5), match='you'>

>>> re.search('you',astr).span() #通过span()获取匹配的位置

(2, 5)

>>> re.search('11',astr).span()

(0, 2)

>>> print(re.search('22',astr))

None

3、re.findall函数

搜索整个字符串,返回一个list

语法如下:re.findall(string)

>>> import re

>>> astr='1you are 3344 my apple\n 11开心果,you\n66a77'

>>> re.findall('\d\d',astr) #列表形式显示所有的两个数字

['33', '44', '11', '66', '77']

>>> re.findall('\d{2,4}',astr) #列表形式显示所有的2——4个数字,默认贪婪匹配

['3344', '11', '66', '77']

>>> re.findall('\d+',astr) #(1,无穷)

['1', '3344', '11', '66', '77']

>>> re.findall('\d*',astr) #(0,无穷)

['1', '', '', '', '', '', '', '', '', '3344', '', '', '', '', '', '', '', '', '', '', '', '11', '', '', '', '', '', '', '', '', '66', '', '77', '']

>>> re.findall('\d?',astr) #匹配0或1

['1', '', '', '', '', '', '', '', '', '3', '3', '4', '4', '', '', '', '', '', '', '', '', '', '', '', '1', '1', '', '', '', '', '', '', '', '', '6', '6', '', '7', '7', '']

>>> re.findall('\d{2,3}?',astr) #一个模式后跟?,不贪婪匹配,范围后面?,有两次就先取两次

['33', '44', '11', '66', '77']

>>> re.findall('\d.\d',astr) #匹配两个数字与中间任意字符

['334', '6a7']

>>> re.findall('^\d',astr) #以数字开头

['1']

>>> re.findall('^\d',astr,re.M) #多行匹配

['1', '6']

>>> re.findall('\d$',astr) #以数字结尾

['7']

>>> re.findall('\d$',astr,re.M) #多行匹配,影响^和$

['7']

>>> re.findall('\d(.)(\d)',astr,re.S)#列表形式返回,每项为一个元组

[('3', '4'), ('a', '7')]

4、re.compile函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。

语法如下:re.compile(pattern,flags=0)

pattern:需要匹配的正则表达式;

flags:标志位(默认为0),它可以控制正则表达式的匹配方式

常见的flags如下:

re.I 忽略匹配时的大小写

re.M 多行匹配,影响 ^ 和 $

re.S . 默认不匹配换行,使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B

示例如下:

>>> import re

>>> astr='AS12as34er567q!"3456'

>>> m1=re.compile(r'\d\d') #编译

>>> m1.search(astr).group() #匹配

'12'

>>> m1.findall(astr)

['12', '34', '56', '34', '56']

>>> m2=re.compile(r'a',re.I) #编译

>>> m2.findall(astr) #匹配

['A', 'a']

5、re.split函数

将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型。

语法如下:re.split(pattern, string ,?maxsplit=0?,flags=0)

pattern:需要匹配的正则表达式;

string:在那个字符串中就行匹配 ;

maxsplit:分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。

flags:标志位(默认为0),它可以控制正则表达式的匹配方式。

常见的flags如下:

re.I 忽略匹配时的大小写

re.M 多行匹配,影响 ^ 和 $

re.S . 默认不匹配换行,使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B

示例如下:

>>> import re

>>> astr='AS12as34er567q!"3456'

>>> astr.split('12') #通过12进行分割

['AS', 'as34er567q!"3456']

>>> re.split("\d{2}",astr) #通过两个数字进行分割

['AS', 'as', 'er', '7q!"', '', '']

>>> re.split("\d+",astr) #通过数字进行分割

['AS', 'as', 'er', 'q!"', '']

>>> m3=re.compile(r'\d+') #与上面等价,运用了compile函数

>>> m3.split(astr)

['AS', 'as', 'er', 'q!"', '']

>>> m3.split(astr,3) #指定分割几次

['AS', 'as', 'er', 'q!"3456']

6、re.sub函数

在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。

语法如下:re.sub(pattern, repl, string, count=0,flags=0)

pattern:需要匹配的正则表达式;

repl : 替换的字符串,也可为一个函数。

string:在那个字符串中就行匹配 ;

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

flags:标志位(默认为0),它可以控制正则表达式的匹配方式

常见的flags如下:

re.I 忽略匹配时的大小写

re.M 多行匹配,影响 ^ 和 $

re.S . 默认不匹配换行,使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B

示例如下:

>>> import re

>>> astr='AS12as34er567q!"3456'

>>> re.sub("5",'9',astr) #将5替换为9

'AS12as34er967q!"3496'

>>> m4=re.compile(r"\d+")

>>> m4.sub(' ',astr) #将数字替换为空字符串

'AS as er q!" '

>>> m4.sub(' ',astr,2) #指定替换几次

'AS as er567q!"3456'

以上是"Python正则表达式有几种函数"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

字符 表达式 正则 函数 字符串 影响 标志 数字 成功 多行 常见 语法 位置 大小 字符集 对象 方式 示例 控制 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技行业发展 互联网科技有限公司经营范围 互联网通讯科技 平安科技 互联网 互联网科技论坛 上海卓越科技 互联网 互联网科技生活的内容 山东吉时兔互联网科技有限公司 广州慧亚互联网科技怎么样 宁夏众和广鑫互联网科技有限公司 互联网科技革命什么开始 知域互联网科技有限公司大骗子 深圳市优智互联网科技有限公司 启辰互联网科技 中天科技中国工业互联网 互联网安防科技感 工业互联网科技成果转化 下一代互联网重大应用科技园 互联网企业和网络科技有限公司 银川新华互联网科技学校招聘 奇酷互联网科技公司 远拓互联网科技 联恩商钥互联网科技有限公司 深圳互联网科技怎么样 互联网科技教育视频 广西互联网科技孵化中心 银川新华互联网科技学校联系电话 黑科技 体验场景 互联网大会 广州智享互联网科技 互联网科技自媒体灵感
0