目录
1.1正则表达式
1.2正则表达式的基本符号
1.2.1 点号 “ . ”
1.2.2 星号 “ * ”
1.2.3 点号+星号 “ .* ”
1.2.4 问号“ ? ”
1.2.5 点号+星号+问号“ .*?” (最常用)
1.2.6 小括号“()”
1.2.7 反斜杠 “ \ ”
1.2.8 数字 “ \d”
1.3 使用正则表达式
1.3.1 findall 方法
1.3.2 search 方法
1.3.3 compile 方法
1.4 正则表达式的提取技巧
1.4.1 先抓大后抓小:二次提取
1.4.2 括号里括号外
首页 后端开发 Python教程 归纳整理Python正则表达式知识点

归纳整理Python正则表达式知识点

Apr 13, 2022 pm 07:09 PM
python

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于正则表达式的相关问题,正则表达式(Regular Expression)是一段字符串,它可以表示一段有规律的信息,下面我们一起来看一下,希望对大家有帮助。

归纳整理Python正则表达式知识点

推荐学习:python视频教程

1.1正则表达式

正则表达式(Regular Expression)是一段字符串,它可以表示一段有规律的信息。Python自带一个正则表达式模块,通过这个模块可以查找、提取、替换一段有规律的信息。在一万个人里面找一个人很困难,但是在一万个人里面找一个非常“有特点”的人却很容易。假设有一个人,皮肤是绿色的,身高三米,那么即使这个人混在一万人中,其他人也能一眼找到他。这个“寻找”的过程,在正则表达式中叫作“匹配”。在程序开发中,要让计算机程序从一大段文本中找到需要的内容,就可以使用正则表达式来实现。使用正则表达式有如下步骤。
(1)寻找规律。
(2)使用正则符号表示规律。
(3)提取信息。

1.2正则表达式的基本符号

1.2.1 点号 “ . ”

一个点号可以代替除了换行符以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号。

1.2.2 星号 “ * ”

一个星号可以表示它前面的一个子表达式普通字符、另一个或几个正则表达式符号)0次到无限次。

请添加图片描述
如上均可以:(星号表示的是前面的一个表达式)
请添加图片描述

1.2.3 点号+星号 “ .* ”

点号表示任意非换行符的字符,星号表示匹配它前面的字符0次或者任意多次。所以“.*”表示匹配一串任意长度的字符串任意次。
请添加图片描述
如上均可以:
它表示在“如”和“哈”中间出现“任意多个除了换行符以外的任意字符”。
请添加图片描述

1.2.4 问号“ ? ”

问号表示它前面的子表达式0次或者1次。注意,这里的问号是英文问号请添加图片描述
如上均可以:请添加图片描述

1.2.5 点号+星号+问号“ .*?” (最常用)

结合后用法:
请添加图片描述
如上均可以:
请添加图片描述
注:“ .*?” 与“ .* ”的区别
.*?的意思就是匹配一个能满足要求的最短字符串。
一句话总结如下。
①“.*”:贪婪模式,获取最长的满足条件的字符串。
②“.*? ”:非贪婪模式,获取最短的能满足条件的字符串。

1.2.6 小括号“()”

从一段字符串中“提取”出一部分的内容.
有如下一个字符串:
请添加图片描述
可以看出,这里的密码左边有一个英文冒号,右边有一个汉字“你”。当构造一个正则表达式:.*?你时,得到的结果将会是:
请添加图片描述
然而,冒号和汉字“你”并不是密码的一部分,如果只想要“12345abcde”,就需要使用括号:
请添加图片描述
得到:
请添加图片描述

1.2.7 反斜杠 “ \ ”

在正则表达式里面,很多符号都是有特殊意义的,例如问号、星号、大括号、中括号和小括号。反斜杠需要和其他的字符配合使用来把特殊符号变成普通符号,把普通符号变成特殊符号。
请添加图片描述

1.2.8 数字 “ \d”

正则表达式里面使用“\d”来表示一位数字。
如果要提取两个数字,可以使用\d\d;如果要提取3个数字,可以使用\d\d\d。但是如果不知道这个数有多少位怎么办呢?就需要用*号来表示一个任意位数的数字。

请添加图片描述
全部都可以使用下面这个正则表达式来表示:
请添加图片描述

1.3 使用正则表达式

Python的正则表达式模块名字为“re”,也就是“regular expression”的首字母缩写。在Python中需要首先导入这个模块再进行使用。导入的语句为:

import re
登录后复制

1.3.1 findall 方法

Python的正则表达式模块包含一个findall方法,它能够以列表的形式返回所有满足要求的字符串。
findall的函数原型为:

re.findall(pattern,string,flags=0)
登录后复制

pattern表示正则表达式,string表示原来的字符串,flags表示一些特殊功能的标志。findall的结果是一个列表,包含了所有的匹配到的结果。如果没有匹配到结果,就会返回空列表。

当需要提取某些内容的时候,使用小括号将这些内容括起来,这样才不会得到不相干的信息。如果包含多个“(.*? )”怎么返回呢?如图3-2所示,返回的仍然是一个列表,但是列表里面的元素变为了元组,元组里面的第1个元素是账号,第2个元素为密码。
请添加图片描述

函数原型中有一个flags参数。这个参数是可以省略的。当不省略的时候,具有一些辅助功能,例如忽略大小写、忽略换行符等。
这里以忽略换行符为例来进行说明要忽略换行符,就需要使用到“re.S”这个flag。请添加图片描述
虽然说匹配到的结果中出现了“\n”这个符号,不过总比什么都得不到强。内容里面的换行符在后期清洗数据的时候把它替换掉即可。

1.3.2 search 方法

search()的用法和findall()的用法一样,但是search()只会返回第1个满足要求的字符串。一旦找到符合要求的内容,它就会停止查找。对于从超级大的文本里面只找第1个数据特别有用,可以大大提高程序的运行效率。

search()的函数原型为:请添加图片描述
对于结果,如果匹配成功,则是一个正则表达式的对象;如果没有匹配到任何数据,就是None。

如果需要得到匹配到的结果,则需要通过.group()这个方法来获取里面的值。
请添加图片描述
只有在.group()里面的参数为1的时候,才会把正则表达式里面的括号中的结果打印出来。

.group()的参数最大不能超过正则表达式里面括号的个数。参数为1表示读取第1个括号中的内容,参数为2表示读取第2个括号中的内容,以此类推。
(注意图里的不是findall)
请添加图片描述

1.3.3 compile 方法

re.findall()自带re.compile()的功能,所以没有必要使用re.compile()。

1.4 正则表达式的提取技巧

1.4.1 先抓大后抓小:二次提取

请添加图片描述

1.4.2 括号里括号外

括号内可以有其他字符。
具体影响见下图。
请添加图片描述
如果括号里面有其他普通字符,那么这些普通字符就会出现在获取的结果里面。

推荐学习:python视频教程

以上是归纳整理Python正则表达式知识点的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1668
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

sublime怎么运行代码python sublime怎么运行代码python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中运行 Python 代码,需先安装 Python 插件,再创建 .py 文件并编写代码,最后按 Ctrl B 运行代码,输出会在控制台中显示。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

vscode在哪写代码 vscode在哪写代码 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中编写代码简单易行,只需安装 VSCode、创建项目、选择语言、创建文件、编写代码、保存并运行即可。VSCode 的优点包括跨平台、免费开源、强大功能、扩展丰富,以及轻量快速。

notepad 怎么运行python notepad 怎么运行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。

See all articles