我想使用搜索&替换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的解决方案?
提前致谢!
答案 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进行此类事情:
您现在应该在Excel中有4列:
192 | 168 | 1 | 1
右键单击并将每列格式化为3位数和前导零的数字。
这显然是一个廉价而肮脏的修复方法,并不是一种处理此问题的程序化方法,但我发现这种技术对于不时清理数据非常有用。
答案 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])$