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

 

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?type=blog个人简介:打工人。

持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。

如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:[email protected] 

 

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

【Python】一文带你了解 正则表达式 + 简单操作_第1张图片

 

目录

一、简介

二、发展史

三、主要功能详解

        1. re.compile()

        2. re.match()

        3. re.search()

        4. re.findall()

        5. re.sub()

四、示例代码加讲解如何使用

        1. 匹配邮箱地址

        2. 匹配 IP 地址

        3. 匹配 HTML 标记

 五、总结


一、简介

        正则表达式是一种匹配文本模式的工具,广泛应用于各种编程语言中。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 [email protected]')
print(result)

        输出结果为: 

['[email protected]'] 

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

  • \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('

hello

') print(result)

        输出结果为: 

['

', '

'] 

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

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

  • <:匹配 < 符号。
  • [^>]+:匹配由一个或多个非 > 符号的子串。
  • :匹配 > 符号。

 五、总结

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

【Python】一文带你了解 正则表达式 + 简单操作_第2张图片

 

你可能感兴趣的:(活动,python,python,开发语言)