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

时间:2016-09-23 11:46:17

标签: java regex

我的mac地址看起来像482C6A1E593D,我希望将其恢复为类似48:2C:6A:1E:59:3D

的内容

我已经能够制作这段代码:

Pattern.compile("(.{2})").matcher(macAddress).replaceAll("$1:");

然而,它会返回48:2C:6A:1E:59:3D:而不是48:2C:6A:1E:59:3D我想忽略最后一场比赛以避免使用最后一场比赛:

3 个答案:

答案 0 :(得分:4)

你应该使用负面外观头来结束字符串。

public static void main(String[] args) {
    String s = "482C6A1E593D";
    s = s.replaceAll("(\\w{2})(?!$)", "$1:");
    System.out.println(s);
}

O / P:

48:2C:6A:1E:59:3D

答案 1 :(得分:2)

您也可以使用需要符号的正向前瞻:

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

请参阅this demo

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

答案 2 :(得分:0)

Kotlin 版本的 Wiktor Stribiżew 的回答:

val macAddress = "482C6A1E593D"
println(macAddress.replace(".{2}(?=.)".toRegex(), "$0:"))