Regular Expression
或 re
模块用于根据提供的模式搜索给定的文本数据。Python通过re模块提供正则表达式函数。re模块是一个内置模块,无需安装。这个 芬德尔() 方法由re模块提供,用于计算给定字符串或文本的所有正则表达式。为了在Python模块中使用正则表达式 re
应该像下面这样导入。
import re
re.findall()方法语法
这个 关于findall() 方法具有以下语法,其中REGEX和STRING参数都是必需的。
re.findall(REGEX , STRING)
- 正则表达式 是将应用于字符串并返回匹配结果的正则表达式模式。此参数是必需的。
- 字符串 将搜索指定正则表达式模式的字符串或文本。此参数是必需的。
正则表达式字符和模式
在使用re.findall()regex匹配示例开始示例之前,让我们列出一些常用的和有用的regex字符和模式以及findall()方法。
正则表达式 | 说明 |
---|---|
[] | 表示特殊字符类 |
^ | 行乞 |
$ | 这条线的尽头 |
. | 任何单个字符 |
? | 指定字符的出现次数为零或更多 |
| | 或者 |
* | 任何次数 |
+ | 一个或多个事件 |
{} | a组正则表达式 |
() | 包含一组正则表达式 |
re.findall()示例
在下面的示例中,我们将使用查找字母和数字并将其与指定的正则表达式匹配。然后将其提供给re.findall()方法,该方法将以列表的形式返回所有匹配的行。
import rere_alphabet= "python.*"re_number= "d+"text = """ I like the web site pythontect.com This site is the best site of the 2020"""match = re.findall(re_alphabet , text)print(match)match = re.findall(re_number , text)print(match)
输出如下。正如我们所看到的那样,findall()方法可能返回零个、单个或多个匹配项,结果匹配项将作为列表提供。下面我们可以看到,每个数学都是作为列表项提供的。
['pythontect.com']['2020']
查找所有IP地址
regex findall()方法可用于匹配和查找文本文件中的所有IP地址。IP地址regex可以用 (?:[0-9]{1,3}.){3}[0-9]{1,3}
图案。
import reall_ip_addresses = re.findall("(?:[0-9]{1,3}.){3}[0-9]{1,3}" , text)for ip_address in all_ip_addresses: print(ip_address)
查找所有MAC地址
MAC地址由以太网卡使用,无线网络用于第二层通信。findall()方法可用于匹配和查找给定文本中的所有mac地址。我们假设MAC地址是以格式提供的 AA-BB-CC-DD-EE-FF
.
import re
all_ip_addresses = re.findall("([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})" , text)
for ip_address in all_ip_addresses:
print(ip_address)
re.findall()与re.search()
这个 搜索() 是另一种可以用来进行基于regex的搜索和匹配的方法。它与re.findall()方法非常相似,但与我们预期的有一些不同。方法re.findall()搜索整个文本并以列表形式返回所有匹配项,但re.search()方法仅返回第一个匹配项。因此re.search()可以用于检查给定regex的简单测试。
import rere_alphabet= "python.*"re_number= "d+"text = """ I like the web site pythontect.com This site is the best site of the 2020"""match = re.search(re_alphabet , text)print(match)
输出如下所示,其中有一个单一的匹配范围在21到35个字符之间。
![图片[1]-Python re.findall()方法教程-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2021/03/pythontect_image-21.png)