Python正则表达式search()函数详解:从基础用法到IP地址精准匹配
本文详细解析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()函数的相关内容,建议查阅本站往期文章或继续浏览后续教程,感谢大家的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













