【Python】一文带你了解 正则表达式 + 简单操作

简介: 正则表达式是一种匹配文本模式的工具,广泛应用于各种编程语言中。Python 通过 re 模块提供对正则表达式的支持,可用于处理字符串、文本文件等内容。正则表达式的原理是定义一种规则,根据这种规则去识别目标字符串中的符合规则的内容,使用规则可以进行灵活的匹配操作。正则表达式通过一些元字符和普通字符组合起来,构成一种定义规则的语言,常用于字符串匹配和操作。在 Python 中,re 模块提供了常见的正则表达式功能,如编译正则表达式、匹配字符串、搜索目标字符串、替换字符串等操作。

本文将为大家详细介绍 python 的正则表达式,包括简介、发展史、主要功能详解,示例代码加讲解如何使用,总结等内容,希望对大家了解和使用正则表达式有所帮助。


image.png
一、简介
正则表达式是一种匹配文本模式的工具,广泛应用于各种编程语言中。Python 通过 re 模块提供对正则表达式的支持,可用于处理字符串、文本文件等内容。
正则表达式的原理是定义一种规则,根据这种规则去识别目标字符串中的符合规则的内容,使用规则可以进行灵活的匹配操作。正则表达式通过一些元字符和普通字符组合起来,构成一种定义规则的语言,常用于字符串匹配和操作。
在 Python 中,re 模块提供了常见的正则表达式功能,如编译正则表达式、匹配字符串、搜索目标字符串、替换字符串等操作。re 模块中几个常用的函数包括:re.compile()、re.match()、re.search()、re.findall()、re.sub()。下面我将详细介绍这些函数的使用方法和功能。

二、发展史
正则表达式的概念最早起源于20世纪50年代的计算机科学领域。在1951年,美国数学家斯蒂芬·科尔纳根据最小化有限状态自动机的数学理论,提出了可以自动识别一类语言模式的方法。后来,在20世纪60年代,正则表达式得到了普及和广泛应用。
在20世纪80年代末到90年代初,在 Unix 操作系统中引入了一种基于正则表达式的搜索工具:grep。grep 可以对文件进行正则表达式的匹配操作,并输出符合规则的行。随着互联网的普及和编程语言的发展,越来越多的编程语言提供了对正则表达式的支持,如 Perl 语言、Python 语言等。
Python 的 re 模块提供了对正则表达式的支持,可以完成字符串中的搜索、匹配、替换等功能。相比于其他编程语言来说,Python 的正则表达式语言更加简单易懂,学习门槛较低。

三、主要功能详解
1.re.compile()
compile() 函数用于将正则表达式编译成一个对象,供其他函数使用。compile() 函数可以接收两个参数:pattern(正则表达式字符串)和 flags(可选参数,表示正则表达式的匹配模式)。

语法:


re.compile(pattern, flags=0)

参数说明:

pattern: 表示正则表达式字符串。
flags: 可选参数,表示正则表达式的匹配模式。
flags 参数可以接收以下常量值:

re.I:忽略大小写匹配
re.L:用于本地(locale)匹配,如正则表达式中忽略大小写
re.M:多行匹配模式。如果字符串中含有多行,则 ^ 匹配行的开头,$ 匹配行结尾
re.S:使 . 匹配包括换行符在内的所有字符
re.U:Unicode 匹配模式
re.X:详细模式。此模式忽略正则表达式中的空白和注释,可以通过转义字符 \ 实现
下面是一个简单的示例代码,演示如何使用 compile() 函数编译正则表达式:

import re

pattern = re.compile(r'hello')
result = pattern.findall('hello world')
print(result)

输出结果为:['hello']
2.re.match()
match() 函数尝试从字符串的起始位置匹配一个正则表达式,如果匹配成功,则返回一个匹配对象,否则返回 None。match() 函数只匹配目标字符串的第一个字符。
语法:

re.match(pattern, string, flags=0)

参数说明:
pattern: 表示正则表达式字符串。
string: 目标字符串。
flags: 可选参数,表示正则表达式的匹配模式。
下面是一个简单的示例代码,演示如何使用 match() 函数匹配字符串:

import re

pattern = re.compile(r'hello')
result = pattern.match('hello world')
print(result.group())

输出结果为:hello
3.re.search()
search() 函数在目标字符串中匹配正则表达式,一旦找到匹配的串就停止搜索。如果匹配成功,则返回一个匹配对象,否则返回 None。
语法:

re.search(pattern, string, flags=0)

参数说明:

pattern: 表示正则表达式字符串。
string: 目标字符串。
flags: 可选参数,表示正则表达式的匹配模式。
下面是一个简单的示例代码,演示如何使用 search() 函数匹配字符串:


import re

pattern = re.compile(r'world')
result = pattern.search('hello world')
print(result.group())

输出结果为:world
4.re.findall()
findall() 函数将在目标字符串中找到所有正则表达式匹配的子串,并返回一个列表。

语法:


re.findall(pattern, string, flags=0)

参数说明:

pattern: 表示正则表达式字符串。
string: 目标字符串。
flags: 可选参数,表示正则表达式的匹配模式。
下面是一个简单的示例代码,演示如何使用 findall() 函数匹配字符串:


import re

pattern = re.compile(r'\d+')
result = pattern.findall('1 apple, 2 oranges, 3 bananas')
print(result)

输出结果为:['1', '2', '3']
5.re.sub()
sub() 函数用于在目标字符串中查找正则表达式匹配的子串,并将其替换为指定字符串。可以使用反斜杠及数字指定要替换的内容。

语法:


re.sub(pattern, repl, string, count=0, flags=0)

参数说明:

pattern: 表示正则表达式字符串。
repl: 目标字符串,表示要替换成的内容。
string: 目标字符串。
count: 可选参数,表示替换的次数。默认为 0,表示替换所有匹配成功的子串。
flags: 可选参数,表示正则表达式的匹配模式。
下面是一个简单的示例代码,演示如何使用 sub() 函数替换字符串:


import re

pattern = re.compile(r'orange[s]?')
result = pattern.sub('apple', '2 oranges and 3 orange')
print(result)

输出结果为: 2 apples and 3 apple
四、示例代码加讲解如何使用
下面是一些示例代码,演示如何在 Python 中使用正则表达式。
1.匹配邮箱地址
以下代码演示如何使用正则表达式匹配邮箱地址:


import re

pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
result = pattern.findall('my email is example@gmail.com')
print(result)

输出结果为:['example@gmail.com']
正则表达式 \b[A-Za-z0-9._%±]+@[A-Za-z0-9.-]+.[A-Z|a-z]{2,}\b 匹配了邮箱地址 example@gmail.com,其中的元字符解释如下:

\b:匹配单词的起始位置。
[A-Za-z0-9.%±]+:匹配由大小写字母、数字、.、、%、+ 和 - 组成的字符串。
@: 匹配 @ 符号。
[A-Za-z0-9.-]+:匹配由大小写字母、数字、. 和 - 组成的字符串。
.: 匹配点号。注意需要使用 \ 转义。
[A-Z|a-z]{2,}: 匹配大小写字母,长度至少为 2。
2.匹配 IP 地址
以下代码演示如何使用正则表达式匹配 IP 地址:


import re

pattern = re.compile(r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b')
result = pattern.findall('my IP is 192.168.0.1')
print(result)

输出结果为: ['192.168.0.1']

正则表达式 \b(?:[0-9]{1,3}.){3}[0-9]{1,3}\b 匹配了 IP 地址 192.168.0.1,其中的元字符解释如下:

\b:匹配单词的起始位置。
(?:[0-9]{1,3}.){3}:非捕获组,匹配由一个或多个数字和点号组成的子串,重复 3 次。
[0-9]{1,3}:匹配由一个或多个数字组成的子串。
3.匹配 HTML 标记
以下代码演示如何使用正则表达式匹配 HTML 标记:


import re

pattern = re.compile(r'<[^>]+>')
result = pattern.findall('<p>hello</p>')
print(result)

输出结果为:['

', '

']
正则表达式 <[^>]+> 匹配了 HTML 标记

,其中的元字符解释如下:

<:匹配 < 符号。
[^>]+:匹配由一个或多个非 > 符号的子串。
:匹配 > 符号。
五、总结
正则表达式是一种强大的文本处理工具,可以用于基于模式的字符串匹配、替换、提取等多种操作中。Python正则表达式模块提供了一种规范化的表示方法,可以使用普通字符、特殊字符、元字符、修饰符等组成自己的正则表达式。使用Python正则表达式的步骤包括导入re模块、编写正则表达式、创建正则表达式验证对象、使用正则表达式进行匹配、解析匹配结果等。Python的正则表达式模块是一个非常强大的工具,在数据处理、文本处理、搜索引擎等领域得到了广泛应用。
image.png

目录
相关文章
|
6天前
python+Pycharm+selenium操作浏览器(Chorme或Edge)
python+Pycharm+selenium操作浏览器(Chorme或Edge)
10 1
|
7天前
|
jenkins 持续交付 API
使用Python操作Jenkins的过程详解
Python作为一种简洁、灵活且功能丰富的编程语言,可以与各种API轻松集成,Jenkins的API也不例外。借助于Python中的python-jenkins模块,我们可以轻松地编写脚本来连接到Jenkins服务器,并执行各种操作,如创建、删除、构建Jobs等。这种自动化的方式不仅提高了效率,还使得CI/CD流程更加灵活和可控。
|
11天前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
11天前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
2天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之对于Hologres的Python查询,该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
8 0
|
4天前
|
SQL Java 数据库连接
使用Python通过JDBC操作数据库(达梦数据库)
使用Python通过JDBC操作数据库(达梦数据库)
24 0
|
5天前
|
程序员 API 计算机视觉
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
|
6天前
|
Python
Python正则表达式详解:掌握文本匹配的魔法
Python正则表达式详解:掌握文本匹配的魔法
|
6天前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
6 0
|
8天前
|
消息中间件 存储 JSON
python 操作RabbitMq详细操作分享
python 操作RabbitMq详细操作分享
14 0