如何使用正则表达式提取IP列表中的倒数第二个IP地址
提取倒数第二个IP地址的正则表达式方案
需求说明
从逗号分隔的IP列表中提取倒数第二个IP地址:
- 输入示例1:
18.223.194.15, 56.99.45.32, 32.65.27.65, 52.89.22.5, 123.12.22.53→ 目标结果:52.89.22.5 - 输入示例2:
16.45.98.14, 10.22.102.16→ 目标结果:16.45.98.14
可用正则表达式
方案1:直接匹配定位
(?<IP>(?:\d{1,3}\.){3}\d{1,3})\s*,\s*(?:\d{1,3}\.){3}\d{1,3}\s*$
- 逻辑:匹配一个IP,后跟逗号(允许前后空白),再匹配最后一个IP直到字符串结尾,命名捕获组
IP即为倒数第二个IP。
方案2:正向预查定位
(?<IP>(?:\d{1,3}\.){3}\d{1,3})(?=\s*,\s*(?:\d{1,3}\.){3}\d{1,3}\s*$)
- 逻辑:匹配后面紧跟逗号+最后一个IP的IP,通过正向预查
(?=...)锁定位置,捕获组IP就是目标内容。
正则细节说明
(?:\d{1,3}\.){3}\d{1,3}:非捕获组,匹配标准格式的IP地址(和你之前使用的IP匹配规则一致)\s*:匹配任意数量的空白字符,兼容列表中逗号前后可能的空格$:匹配字符串结尾,确保定位到最后一组IP对
内容的提问来源于stack exchange,提问作者Siddharth Vasudevan
相关产品推荐
相关产品推荐

