【问题标题】:Format all IP-Addresses to 3 digits将所有 IP 地址格式化为 3 位数字
【发布时间】:2010-10-25 06:30:49
【问题描述】:

我想使用 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 的适当解决方案吗?

提前致谢!

【问题讨论】:

    标签: regex ip-address


    【解决方案1】:

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

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

    用这个:

    0$1
    

    两次。应该这样做。

    【讨论】:

      【解决方案2】:

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

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

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

      只要匹配就经常更换。如果还有其他文字,事情会变得更加复杂。如果您正在处理 CSV,那么“在列中搜索”选项可能会有所帮助。

      【讨论】:

      • 我用 Ultra-Edit v.14.20 试过了,但对我不起作用。知道为什么吗?
      • 您在尝试之前是否已切换到“Perl”正则表达式?
      【解决方案3】:

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

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

        192 | 168 | 1 | 1

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

      5. 在第 5 列中,只需使用“.”将前面的列连接起来即可。在每列之间: A1 & "." &B1&“。” &C1&“。” & D1

      这显然是一种廉价而肮脏的修复方法,并且不是一种编程方式来处理这个问题,但我发现这种技术对于不时清理数据很有用。

      【讨论】:

      • 呵呵,这正是我在打开这个问题线程之前所做的;)
      【解决方案4】:

      我不确定如何在 UltraEdit 的替换为框中使用正则表达式。

      你可以使用这个正则表达式来查找你的字符串:

      ^(\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])$
      

      【讨论】:

        猜你喜欢
        • 2021-07-09
        • 1970-01-01
        • 2018-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 2011-02-25
        相关资源
        最近更新 更多