Regex Notepad ++ Del除了IP之外的所有内容

时间:2016-02-10 18:46:33

标签: regex notepad++

有一个文本文件,每行包含一个无用信息的IP地址。想要删除IP周围无用的信息。

每一行看起来像:

PDFsharp

仅需要IP地址

< >围绕IP并需要删除它们。

任何帮助表示赞赏

3 个答案:

答案 0 :(得分:1)

假设您没有按句号分隔的任何其他数字组并包含在<...>中,您可以找到:

.*<(\d{1,3}(?:\.\d{1,3}){3})>.*

并替换为

$1

这不验证IP地址;它只在<...>内找到4组1-3个数字,并且在组之间有句点。

根据您的示例文本,这会减少此行

%BER-1-887373: Group <Connect> User <gacan> IP <72.34.184.200>

只是72.34.184.200

Demo

说明:

  • .* - 匹配任何字符零次或多次(从行的开头到<的任何内容)
  • < - 匹配文字字符<
  • ( - 启动一个捕获组,以便我们可以在替换中使用它
    • \d{1,3} - 匹配1到3位数字
    • (?: - 启动非捕获组
      • \. - 匹配文字.
      • \d{1,3} - 匹配1-3位数字
    • ) - 结束非捕获组
    • {3} - 重复非捕获组3次(总共给出4组数字,其间有3个句点)
  • ) - 结束捕获组
  • > - 匹配文字>
  • .* - 匹配任何字符零次或多次(行的其余部分)

替换$1表示使用第一个捕获组(()之间的部分),在这种情况下是IP地址。 ($0将是所有匹配的文本,在这种情况下是整行。

答案 1 :(得分:1)

找一个替换:

  • 查找内容: .*?(\d{1,3}((.\d{1,3}){3})).*
  • 替换蒙特: \1
  • 选择正则表达式
  • 点击全部替换

模式并不完美,因为它不限制有效数字的范围(例如,999.999.999.99也会匹配)。

答案 2 :(得分:0)

正则表达式往往很复杂,很有可能你弄错了。如果所有的行都应该是指定的格式,即IP之前的三个单词和后面的两个单词,我会使用宏。 假设这个例子是:

abc xyz xxxx <127.23.32.120> xxx xyz
  1. 我会把光标移到第一行的末尾。
  2. 按下record marco按钮(顶部的红色按钮)
  3. 按两次Ctrl + Bksp。这将删除xyz和xxx字符。
  4. 按两次Bksp:删除空格和>字符
  5. 按Ctrl +向左箭头7次。这会将光标移动到IP的开头
  6. 按Ctrl + Bksp 4次。这将删除其他无用的文本,并在第一行留下IP。
  7. 按向下箭头,然后按End按钮移动到下一行的末尾
  8. 停止录制宏。
  9. 播放marco直到文件结尾。
相关问题