如何使用正则表达式和 Notepad++ 从日志字符串中提取 IP 地址

如何使用正则表达式和 Notepad++ 从日志字符串中提取 IP 地址

我从日志文件中找到了这样的字符串

rule family="ipv4" source address="54.246.81.158" reject
rule family="ipv4" source address="175.36.129.24" reject

如何在 Notepad++ 文本编辑器中使用正则表达式从每个字符串中匹配一个 IP 地址,然后用匹配的 IP 替换原始地址?

预期结果

54.246.81.158
175.36.129.24

我更喜欢使用正则表达式来实现目标搜索和替换仅。如果在 Notepad++ 中可能的话,我知道我可以使用宏功能,但我不想这样做。

因此,首先,我们将使用正则表达式 ( \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) 匹配 IP。其次,我们将原始字符串替换为步骤 #1 中的 IP 但我不确定使用 Notepad++ 是否可行。如果我失败了,我会使用 vim :-)

答案1

  • Ctrl+H
  • 找什么:^.+?((?:\d+\.){3}\d+).+$
  • 用。。。来代替:$1
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline
  • Replace all

解释:

^           : beginning of line
.+?         : 1 or more any character but newline
(           : start group 1
  (?:       : start non capture group
    \d+     : 1 or more digit
    \.      : a dot
  ){3}      : end group, must appear 3 times
  \d+       : 1 or more digit
)           : end group 1
.+          : 1 or more any character but newline
$           : end of line

替代品:

$1          : content of group 1 (ie. the IP)

给定示例的结果:

54.246.81.158
175.36.129.24

为了确保你有一个 IP 地址,请使用

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

代替

((?:\d+\.){3}\d+)

答案2

更简单的解决方案,但不使用 RegEx:

代替

rule family="ipv4" source address="

什么都没有,

" reject

什么也没有。

答案3

您可以像下面的屏幕截图一样直接复制标记的文本。请注意,正则表达式应该转义点。

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

否则,它将匹配非 IP 号码,例如 12a34a56a78。

在此处输入图片描述

答案4

这是用于匹配 IP 地址的完整正则表达式,它验证了以下有效的 IPv4 IP 地址规则。

  1. 四个从 0 到 255 的整数。
  2. 任何包含三个以上点 (.) 的地址均无效。
  3. 任何大于 255 的数字的地址都是无效的。

正则表达式

^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

让我们把它分解成更小的部分:

  • [0-9][0-9]? 涵盖 0-99 的数字
  • 1[0-9][0-9] 涵盖 100-199 个数字
  • 2[0-9][0-9] - 这应该是一个有效的 IP 地址吗?
  • 2[0-9][5] - 这应该是一个有效的 IP 地址吗?
  • 2[0-4][0-9] - 涵盖 200 至 249
  • 25[0-5] - 涵盖 250-255

如果你想学习如何一步一步构建这个 REGEX,你可以看看这个视频https://www.youtube.com/watch?v=WGd5llvr7e4

这里有一个快速演示多个 IP 地址的验证。

IP 地址验证正则表达式

免责声明:此视频来自我的 Youtube 频道。但它详细介绍了如何使用 REGEX 验证 IP 地址。如果反对票很多,我将删除该链接。谢谢。

相关内容