Python正则表达式search()函数详解:从基础用法到IP地址精准匹配

Noah
Noah
发布时间:2026-10-14| 2人浏览过
原创

本文详细解析Python中re.search()函数的使用方法,对比其与find()函数的异同。通过逐步构建正则表达式,演示如何从简单字符查找进阶到复杂IP地址(0-255范围)的精准匹配,涵盖分组、量词及边界处理等核心技巧,帮助开发者掌握正则表达式在字符串处理中的实际应用。

search()与find()函数的区别

首先探讨search()与find()两个函数的主要区别。


import re
s1 = "2221155"
#search 字符串第一次出现的位置
print(re.search("1",s1))
print(s1.find("1"))

两者的输出结果对比如下:

search()函数返回的是匹配字符串在源字符串中的位置索引;find()函数同样返回字符串出现的位置。表面上看,两者似乎功能相似,但search()函数在正则表达式的高级应用中具有更强大的功能,后续内容将详细展开。

使用search()查找IP地址

接下来介绍如何使用search()函数查找字符串中的IP地址。首先看一个较为简单的示例:


str1 = "192.168.111.123"
ip = re.search(r"\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d",str1)
print(str1)

输出结果如下:

匹配0-255数值段

在上述示例中,我们预先定义了IP地址的固定格式为xxx.xxx.xxx.xxx。然而,实际IP地址的格式并不固定,其每个段落的数值范围是0到255,且位数可能是1位、2位或3位。因此,我们需要采用更进阶的正则表达式来匹配,代码如下:


re.search(r"[01]\d\d|2[0-4]\d|25[0-5]]",str)

该代码中参数的含义如下(|表示逻辑“或”): 如果第一位数字是0或1,则后两位可以是任意数字; 如果第一位数字是2,则第二位数字必须在0到4之间,第三位任意; 如果前两位数字是2和5,则第三位数字必须在0到5之间。 通过这种方式,可以匹配字符串中第一个符合0-255范围的数值段。

多段数值匹配技巧

如果需要匹配多个这样的数值段,可以参考以下示例:


str2 = "192168111123"
num = re.search(r"([01]\d\d|2[0-4]\d|25[0-5]){3}",str2)
print(num)

运行结果如下:

在匹配字符后添加{n},其中n代表匹配的次数。例如,若要查找3次连续符合0-255范围的数值,最后匹配到的值将是3个连续的有效数字段。以下是关键步骤:

完整IP地址匹配实现

最终实现IP地址的完整匹配,代码如下:


str_ip = "ssss192.168.1.1aaaa"
ip = re.search(r"(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])",str_ip)
print(i

匹配结果如下:

至此,关于Python中re模块search()函数的用法详解(特别是IP地址查找部分)已介绍完毕。如需了解更多Python search()函数的相关内容,建议查阅本站往期文章或继续浏览后续教程,感谢大家的支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。