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

如何编写正则匹配日志中IPv4地址并排除类IP格式版本号?

解决日志中IPv4地址精准匹配与替换问题

原正则问题分析

你当前使用的正则(((25[0-5]){1,3}|(2[0-4]|(1\d|[1-9]|)\d)){1,3}\.?){4}存在结构错误:

  • {1,3}被错误应用在段规则分组之外,导致单个段规则可重复1-3次(比如(25[0-5]){1,3}会匹配255255255这类超长字符串)
  • 未严格限制每个IP段长度为1-3位,也未校验段的合法性(比如256、999这类非法IP段会被误匹配)
  • 未处理边界,可能导致部分匹配(比如从15.26.32.1594中误截断出15.26.32.159)

正确的IPv4匹配正则

使用以下正则可精准匹配合法IPv4地址,同时排除段长超3位或非法的类IP字符串:

\b(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\b

正则说明

  • \b:单词边界,确保匹配的IP前后不是数字,避免误截断或匹配超长段的部分内容
  • (?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d):单个合法IP段规则,覆盖0-255的所有情况,严格限制长度为1-3位
  • (?:...\.){3}:匹配前三个带点的段
  • 最后一个段不带点,确保是完整的4段结构

PowerShell替换示例

若需将匹配到的IPv4替换为[REDACTED_IP],可执行以下命令:

$logContent = Get-Content -Path "your-log-file.log" -Raw
$redactedContent = $logContent -replace '\b(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\b', '[REDACTED_IP]'
$redactedContent | Set-Content -Path "redacted-log-file.log"

测试验证

针对你提供的模拟日志:
test 127.1.1.1test test 10.0.0.1 test test 172.28.69.77test test 15.26.32.159 test test 15.26.32.1594test test 1.26.3255.1594test test 1555.2655.3255.1594test 255.255.255.192 256.255.255.0 999.999.999.999
替换后结果:
test [REDACTED_IP]test test [REDACTED_IP] test test [REDACTED_IP]test test [REDACTED_IP] test test 15.26.32.1594test test 1.26.3255.1594test test 1555.2655.3255.1594test [REDACTED_IP] 256.255.255.0 999.999.999.999

  • 合法IP(如127.1.1.1、10.0.0.1、255.255.255.192)被正确替换
  • 超长段的类IP字符串(如15.26.32.1594、1555.2655.3255.1594)未被匹配
  • 非法IP段(如256.255.255.0、999.999.999.999)未被匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:52:44