文章目录

  • 1 fullmatch
  • 2 match
  • 3 search
  • 4 findall
  • 5 finditer
  • 6 split
  • 7 sub
  • 8 compile

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

1 fullmatch

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

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

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

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

2 match

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

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

3 search

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

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

这段函数的输出结果为:

4 findall

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

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

5 finditer

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

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

此时的输出是:<callable_iterator object at 0x00000207930EDDC0>
如果我们对这个迭代器进行遍历

print([i for i in match])


就可以看到这个迭代器的详细信息,其每次都会返回一个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+是一个正则表达式,代表的是一个或多个数字。分割的结果为:

7 sub

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

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

8 compile

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

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

这段代码的输出为

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

Python正则表达式所有函数详解相关推荐

  1. chatgpt赋能python:Python取ln函数详解:用法及常见问题解答

    Python取ln函数详解:用法及常见问题解答 Python取ln函数是一种非常常用的数学函数,它可以帮助开发者在计算中处理数据的自然指数对数.本篇文章将会介绍Python中取ln函数的基础知识,让您 ...

  2. blankcount函数python,Python pandas常用函数详解

    本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...

  3. Python内置函数详解——总结篇

      引 言 国庆期间下定决心打算学习Python,于是下载安装了开发环境.然后问题就来了,怎么开始呢?纠结一番,还是从官方帮助文档开始吧.可是全是英文啊,英语渣怎么破?那就边翻译边看边实践着做吧(顺便 ...

  4. python基础知识~ 函数详解2

    python~函数详解2  1 生成器函数    定义 如果函数有yield这个关键字,就是生成器函数.生成器函数() 获取的是生成器,不执行函数   须知 yield和return一样,都可以返回数 ...

  5. python的super函数详解

    python基础知识 用于类继承的super函数介绍 目录 python基础知识 一.super函数的用途 二.了解super函数的基本信息 三.多继承不重复调用 四.多继承重复调用 总结 一.sup ...

  6. Python正则表达式一文详解+实例代码展示

    目录 前言 一.正则表达式 1.简介 2.概念 3.目的 4.特点 二.Re库 1.re.match() ?2.fullmatch() ?3.search() 4.?sub() ?5.subn() 6 ...

  7. oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解

    1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...

  8. oracle中匹配函数怎么用,Oracle中的正则表达式(及函数)详解

    运算符 在介绍函数前,这里先说明一下Oracle中正则表达式运算符及其描述. 如果不知道他们有什么用,或者也不知道描述说的是什么,没关系,可以先看后面的介绍,就知道他们的含义了. 图片.png ora ...

  9. python中findall函数_Python正则表达式 findall函数详解

    在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候.下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑. 代码如下:import re str= ...

最新文章

  1. .net HtmlParser初步使用研究
  2. linux内存占满但是无进程,为什么TOP看不出真实的内存占用情况?
  3. 润乾报表列太多导致渲染速度慢_报表自动化: 如何选择可视化大屏开发利器
  4. EF 实现自定义数据库字符串
  5. 正则表达式之反向引用
  6. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
  7. js进栈出栈_JavaScript调用栈
  8. c# Winform应用程序开发规范
  9. LeetCode Binary Tree PostorderTranversal
  10. java抽象类可以new_java的抽象类,接口,普通类是否可以直接NEW,并且复写方法?
  11. handlersocket mysql_[原创]MongoDB、HandlerSocket和MySQL性能测试及其结果分析
  12. Spring Cloud 各个版本之间的区别
  13. Halcon 3D create_pose
  14. 班得瑞[Bandari]音乐介绍
  15. 腾讯soso退出历史舞台,搜索结果全部由搜狗提供
  16. 前端与后端的区别(保姆级整理-很详细-2021-05-26)
  17. Caused by: java.lang.NoClassDefFoundError: org/apache/curator/shaded/com/google/common/collect/Maps
  18. el-table 树形表格 自定义展开图标_iOS 14自定义桌面太美了 手把手教你重温青春...
  19. 调查:近1/5毕业生想当公务员 就业前三位选北上广
  20. python中stacked_Python:如何在stacked mod中生成可重复的结果

热门文章

  1. 用ppt制作java类的_如何在PPT中用文本框制作海报?这个方法很简单,不信来看...
  2. unturned组服务器网站,unturned创建服务器
  3. 剑仙java_【剑仙教程】易语言的结构体。自定义数据类型。
  4. 2000元左右有哪些性价比高的手机?不如看看荣耀
  5. Vim实用技巧_2.普通模式和插入模式
  6. X86架构与Arm架构的主要区别分析
  7. Windows系统常用运行库安装包(C++及.NET Framework),以及安装.NET Framework时提示证书不受信任的解决方案
  8. 8.1.6 正则表达式及字符串的替换与分解
  9. html5 求最大公约数和最小公倍数
  10. 变分自编码器——从全概率角度解读