You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字符串中提取所有符合规则的IP地址?含多段串提取示例

提取重叠连续IP段的解决方案

核心思路

要从连续点分隔的数字串里提取所有重叠的4段IP格式字符串,关键是让正则引擎不消耗匹配过的字符,这样才能捕获到重叠结果,用正向预查(零宽断言)就能实现。

基础实现(仅提取4段数字组合)

如果只需要提取连续4段数字(不验证IP合法性),可以用以下正则和代码:

import re

target_str = "1.2.3.4.5.6.7"
# 正向预查捕获4段数字组合,不消耗字符以支持重叠匹配
regex_pattern = r'(?=(\d+\.\d+\.\d+\.\d+))'
result = re.findall(regex_pattern, target_str)
print(result)
# 输出:['1.2.3.4', '2.3.4.5', '3.4.5.6', '4.5.6.7']

严格IP合法性验证

如果需要确保提取的是合法IPv4地址(每个段在0-255之间),把正则里的\d+替换成IP段的合法匹配规则即可:

import re

target_str = "1.2.3.4.5.6.7"
# 匹配合法IP段的正则单元
ip_segment = r'(25[0-5]|2[0-4]\d|[01]?\d\d?)'
# 组合成完整的正向预查正则
regex_pattern = fr'(?=({ip_segment}\.{ip_segment}\.{ip_segment}\.{ip_segment}))'
result = re.findall(regex_pattern, target_str)
print(result)
# 输出:['1.2.3.4', '2.3.4.5', '3.4.5.6', '4.5.6.7']

原理说明

(?=...)是正向预查断言,它只检查当前位置后面是否符合匹配规则,但不会移动正则引擎的匹配指针,所以匹配完"1.2.3.4"后,引擎会从第二个字符(也就是"2"前面的位置)继续匹配,从而捕获到所有重叠的4段组合。

内容的提问来源于stack exchange,提问作者Saurabh Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:42:40