2016-09-23 30 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