将所有IP地址格式化为3位数

时间:2009-05-11 12:10:44

标签: regex ip-address

我想使用搜索&替换UltraEdit(Perl兼容正则表达式)中的对话框,将IP列表格式化为标准格式。

该列表包含:

192.168.1.1  
123.231.123.2  
23.44.193.21  

它的格式应该是这样的:

192.168.001.001  
123.231.123.002  
023.044.193.021 

来自http://www.regextester.com/regular+expression+examples.html的针对PCRE格式的IPv4的RegEx无法正常工作:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

我被困了。有没有人有一个适用于UltraEdit的解决方案?

提前致谢!

4 个答案:

答案 0 :(得分:3)

将正则表达式引擎设置为Perl(在高级部分)并替换它:

(?<!\d)(\d\d?)(?!\d)

用这个:

0$1

<强>两次即可。应该这样做。

答案 1 :(得分:1)

如果您的输入是单个IP​​地址(每行)而没有其他内容(没有其他文本),则此方法将起作用:

我使用Perl样式正则表达式“全部替换”:

Replace (?<!\d)(?=\d\d?(?=[.\s]|$))
with    0

只需按照匹配的频率进行更换。如果有其他文本,事情会变得更复杂。如果你正在处理CSV,也许这里的“在列中搜索”选项很有帮助。

答案 2 :(得分:1)

如果这只是一次性的数据清理工作,我经常只使用Excel或OpenOffice Calc进行此类事情:

  1. 打开文本文件,确保每行只有一个IP地址。
  2. 打开Excel或其他内容并转到“数据|导入外部数据”并使用“。”导入文本文件。作为分隔符。
  3. 您现在应该在Excel中有4列:

    192 | 168 | 1 | 1

  4. 右键单击并将每列格式化为3位数和前导零的数字。

  5. 在第5列中,只需使用“。”执行前一列的字符串连接。在每列之间: A1&amp; “” &安培; B1&amp; “” &安培; C1&amp; “” &安培; D1
  6. 这显然是一个廉价而肮脏的修复方法,并不是一种处理此问题的程序化方法,但我发现这种技术对于不时清理数据非常有用。

答案 3 :(得分:0)

我不确定如何在UltraEdit中的Replace With框中使用正则表达式。

您可以使用此正则表达式查找字符串:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$