2016-09-23 29 views
1

我有一个MAC地址,这样看482C6A1E593D,我想这回弄成这个样子48:2C:6A:1E:59:3D使用添加冒号MAC地址的正则表达式

我已经能够让这样的代码:

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

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

回答

2

您也可以使用正向前查找需要一个符号存在:

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

this demo

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

+1

是的。你正确使用'$ 0'而不捕获组也会做到这一点:) – TheLostMind

4

您应该在String结束时使用否定查找头。

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