Python正则表达式所有函数详解

简介: Python 中的 re.fullmatch() 函数用于检查输入字符串是否完全匹配给定的正则表达式模式。它接受两个参数:第一个是正则表达式模式,第二个是要与该模式匹配的字符串。如果匹配成功,它会返回一个匹配对象,如果匹配失败,则返回 None。

本篇博客主要讲解正则表达式相关的函数,均不涉及复杂的正则表达式语法。如需了解正则表达式语法,请参考下面的文章:

Python正则表达式语法详解

1 fullmatch


Python 中的 re.fullmatch() 函数用于检查输入字符串是否完全匹配给定的正则表达式模式。它接受两个参数:第一个是正则表达式模式,第二个是要与该模式匹配的字符串。如果匹配成功,它会返回一个匹配对象,如果匹配失败,则返回 None。


import re
text = "Hello, world!"
pattern = re.compile("Hello, world!")
match = pattern.fullmatch(text)
if match:
    print(match)
else:
    print("整个字符串与模式不匹配。")


此处完全匹配,所以函数的输出是:


32f210d655c44a1190db5d1c11f6ca66.png



此处span表示的是匹配上的字符串的开始位置与结束位置,match表示匹配上的内容,后面其他函数的输出含义与此相同。


2 match


Python 中的 re.match() 函数用于判断字符串的起始位置是否与正则表达式匹配,它接受两个参数:第一个是正则表达式模式,第二个是要与该模式匹配的字符串。如果匹配成功,它会返回一个匹配对象,如果匹配失败,则返回 None。

import re
text = "Hello, world!"
pattern = re.compile("Hello")
match = pattern.match(text)
if match:
    print(match)
else:
    print("匹配失败")

ee4f1b8255af471e82c91d7209206e4a.png



3 search


扫描整个字符串,判断有无匹配的子串,如果匹配成功,将返回第一个匹配的字符串对象。可以看出:上面三种函数的匹配规则,其严格程度是依次下降的。

import re
text = "Hello, world! How are you?"
pattern = "world"
match = re.search(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")


这段函数的输出结果为:


79ad83208b854cf3993bb05bceedd07e.png

4 findall


findall与research的严格程度类似,均是寻找字符串中与正则表达式匹配的字符串片段。不同的是findall将会找到所有的匹配结果,并且将所有的匹配结果组成一个列表进行返回。


import re
text = "Hello, world! How are you? world"
pattern = "world"
match = re.findall(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")

575a1db7cbd14f60b82510f88ea4c3bb.png



5 finditer


finditer与findall都是寻找字符串中与正则表达式匹配的字符串片段的所有结果。与findall()函数不同的是,finditer()函数返回的是一个迭代器,并可以获取更多的信息,如匹配字符串的起始和终止位置。

import re
text = "Hello, world! How are you? world"
pattern = "world"
match = re.finditer(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")
1


此时的输出是:<callable_iterator object at 0x00000207930EDDC0>

如果我们对这个迭代器进行遍历


print([i for i in match])
1


b287fd8e40294b41868909dcdd5646c5.png



就可以看到这个迭代器的详细信息,其每次都会返回一个object,与search等函数的返回格式类似。


6 split


re.split()是python中正则表达式库re中的一个函数,用于在字符串中按照指定的规则分割字符串。该函数接受两个参数:第一个是要分割的字符串,第二个是分割规则(正则表达式)。它返回一个字符串列表,每个字符串代表一个分割后的部分。

这个函数python内置的split函数很像,re.split()与split()的主要区别在于分割规则的不同。split()仅支持固定的分隔符,而re.split()支持使用正则表达式作为分割规则。这意味着,re.split()可以根据复杂的分割规则(例如以数字开头)来分割字符串,而split()不能。因此,在需要使用正则表达式进行分割时,应使用re.split()。

代码举例:


re_str = r'\d+'
str1 = 'qwer1tyui345osdfghj99876kl'
result = re.split(re_str,str1)
print(result)


这里\d+是一个正则表达式,代表的是一个或多个数字。分割的结果为:

9d0d0e9dcf6749faac8d32bf68f1eb34.png


7 sub


re.sub()是python中正则表达式库re中的一个函数,用于在字符串中替换与指定正则表达式匹配的部分。该函数接受三个参数:第一个是替换规则(正则表达式),第二个是要替换的字符串,第三个是要被替换的字符串。它返回一个替换后的字符串。

代码举例:


import re
re_str = r'\d+'
str1 = 'qwer1tyui345osdfghj99876kl'
str1 = re.sub(re_str, '一二三',str1) # 用'一二三'替换str1中所有匹配re_str的子串
print(str1)


2e7f3dac135344df8941c7a329f75081.png


8 compile


re.compile()是python中正则表达式库re中的一个函数,用于编译正则表达式,以便多次使用。编译后的正则表达式可以作为参数传递给其他正则表达式函数(例如re.search(),re.match(),re.findall()等)。

代码示例:


import re
re_pattern = re.compile(r'\d+')
str1 = 'qwer1tyui345osdfghj99876kl'
result1 = re_pattern.findall(str1)
result2 = re_pattern.search(str1)
print(result1)
print(result2)


这段代码的输出为


180b6482ab634b4bb1833d9233dcf149.png




可以看到,当需要重复使用正则方法时,这个函数还是很有用的。


相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
282 1
|
3月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
362 1
|
3月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
212 0
|
4月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
293 101
|
4月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
239 99
|
4月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
210 98
|
4月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
5月前
|
Python
Python 函数定义
Python 函数定义
616 155
|
6月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
622 0
|
9月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
251 0

推荐镜像

更多