使用正则表达式向 mac 地址添加冒号

JMB*_*ise 2 java regex

我有一个如下所示的 mac 地址482C6A1E593D,我想将其返回为类似这样的地址48:2C:6A:1E:59:3D

我已经能够编写这段代码:

Pattern.compile("(.{2})").matcher(macAddress).replaceAll("$1:");
Run Code Online (Sandbox Code Playgroud)

然而它返回48:2C:6A:1E:59:3D:而不是48:2C:6A:1E:59:3D我想忽略最后一个匹配以避免最后一个:

Wik*_*żew 6

您还可以使用要求存在符号的正向前瞻:

String macAddress = "482C6A1E593D";
System.out.println(macAddress.replaceAll(".{2}(?=.)", "$0:"));
Run Code Online (Sandbox Code Playgroud)

这个演示

请注意,这里不需要任何捕获组,因为它$0是对整个匹配的反向引用(同样可以与TheLostMind 的正则表达式- use一起使用s.replaceAll("\\w{2}(?!$)", "$0:"))。