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

Twi*_*ell 2 networking notepad++ regex

我从日志文件中有这样的字符串

rule family="ipv4" source address="54.246.81.158" reject
rule family="ipv4" source address="175.36.129.24" reject
Run Code Online (Sandbox Code Playgroud)

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

预期结果

54.246.81.158
175.36.129.24
Run Code Online (Sandbox Code Playgroud)

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

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

Tot*_*oto 6

  • 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
Run Code Online (Sandbox Code Playgroud)

替代品:

$1          : content of group 1 (ie. the IP)
Run Code Online (Sandbox Code Playgroud)

给定示例的结果:

54.246.81.158
175.36.129.24
Run Code Online (Sandbox Code Playgroud)

要确保您拥有 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]?)))
Run Code Online (Sandbox Code Playgroud)

代替

((?:\d+\.){3}\d+)
Run Code Online (Sandbox Code Playgroud)