Regex Notepad++ 删除除 IP 以外的所有内容
Regex Notepad++ Del all except IP
有一个文本文件,每行包含一个无用信息的IP地址。想删除IP周围无用的信息。
每一行看起来像:
%BER-1-887373: Group <Connect> User <gacan> IP <72.34.184.200> No IPv6 address available
只需要IP地址
IP 周围的< > 也需要删除。
感谢任何帮助
假设您没有任何其他由句点分隔并包含在 <...>
中的数字组,您可以找到:
.*<(\d{1,3}(?:\.\d{1,3}){3})>.*
并替换为
这不会验证 IP 地址;它只是在 <...>
内找到 4 组 1-3 个数字,并且组与组之间有句点。
鉴于您的示例文本,这将减少这一行
%BER-1-887373: Group <Connect> User <gacan> IP <72.34.184.200>
到 72.34.184.200
.
解释:
.*
- 匹配任意字符零次或多次(从行首到 <
)
<
- 匹配文字字符 <
(
- 启动一个捕获组,以便我们可以在替换中使用它
\d{1,3}
- 匹配 1 到 3 个数字
(?:
- 启动一个非捕获组
\.
- 匹配文字 .
\d{1,3}
- 匹配 1-3 位数字
)
- 结束非捕获组
{3}
- 重复非捕获组 3 次(给我们总共 4 组数字,中间有 3 个句点)
)
- 结束捕获组
>
- 匹配文字 >
.*
- 匹配任何字符零次或多次(该行的其余部分)
替换</code>意味着使用第一个捕获组(<code>(
和)
之间的部分),在本例中是IP地址。 ([=35=]
将是所有匹配的文本,在本例中是整行)。
查找替换:
- 查找内容:
.*?(\d{1,3}((.\d{1,3}){3})).*
- 替换为:
- select 正则表达式
- 全部替换
该模式并不完美,因为它不限制有效数字的范围(例如 999.999.999.99 也会被匹配)。
正则表达式有时很复杂,您很可能会弄错。如果所有行都应该采用指定格式,即 IP 前三个词和 IP 后两个词,我会使用宏。
假设示例是:
abc xyz xxxx <127.23.32.120> xxx xyz
- 我会将光标移动到第一行的末尾。
- 按
record marco
按钮(顶部的红色按钮)
- 按两次 Ctrl + Bksp。这将删除 xyz 和 xxx 字符。
- 按 Bksp 两次:这将删除 space 和
>
字符
- 按 Ctrl + 左箭头键 7 次。这会将光标移动到 IP
的开头
- 按 Ctrl + Bksp 4 次。这将删除其他无用的文本,并在第一行留下 IP。
- 按向下箭头,然后按
End
按钮移动到下一行的末尾
- 停止录制宏。
- 播放 marco 直到文件结束。
有一个文本文件,每行包含一个无用信息的IP地址。想删除IP周围无用的信息。
每一行看起来像:
%BER-1-887373: Group <Connect> User <gacan> IP <72.34.184.200> No IPv6 address available
只需要IP地址
IP 周围的< > 也需要删除。
感谢任何帮助
假设您没有任何其他由句点分隔并包含在 <...>
中的数字组,您可以找到:
.*<(\d{1,3}(?:\.\d{1,3}){3})>.*
并替换为
这不会验证 IP 地址;它只是在 <...>
内找到 4 组 1-3 个数字,并且组与组之间有句点。
鉴于您的示例文本,这将减少这一行
%BER-1-887373: Group <Connect> User <gacan> IP <72.34.184.200>
到 72.34.184.200
.
解释:
.*
- 匹配任意字符零次或多次(从行首到<
)<
- 匹配文字字符<
(
- 启动一个捕获组,以便我们可以在替换中使用它\d{1,3}
- 匹配 1 到 3 个数字(?:
- 启动一个非捕获组\.
- 匹配文字.
\d{1,3}
- 匹配 1-3 位数字
)
- 结束非捕获组{3}
- 重复非捕获组 3 次(给我们总共 4 组数字,中间有 3 个句点)
)
- 结束捕获组>
- 匹配文字>
.*
- 匹配任何字符零次或多次(该行的其余部分)
替换</code>意味着使用第一个捕获组(<code>(
和)
之间的部分),在本例中是IP地址。 ([=35=]
将是所有匹配的文本,在本例中是整行)。
查找替换:
- 查找内容:
.*?(\d{1,3}((.\d{1,3}){3})).*
- 替换为:
- select 正则表达式
- 全部替换
该模式并不完美,因为它不限制有效数字的范围(例如 999.999.999.99 也会被匹配)。
正则表达式有时很复杂,您很可能会弄错。如果所有行都应该采用指定格式,即 IP 前三个词和 IP 后两个词,我会使用宏。 假设示例是:
abc xyz xxxx <127.23.32.120> xxx xyz
- 我会将光标移动到第一行的末尾。
- 按
record marco
按钮(顶部的红色按钮) - 按两次 Ctrl + Bksp。这将删除 xyz 和 xxx 字符。
- 按 Bksp 两次:这将删除 space 和
>
字符 - 按 Ctrl + 左箭头键 7 次。这会将光标移动到 IP 的开头
- 按 Ctrl + Bksp 4 次。这将删除其他无用的文本,并在第一行留下 IP。
- 按向下箭头,然后按
End
按钮移动到下一行的末尾 - 停止录制宏。
- 播放 marco 直到文件结束。