我有一個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
我想忽略最後一次匹配以避免產生最後一個匹配:
我有一個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
我想忽略最後一次匹配以避免產生最後一個匹配:
您也可以使用正向前查找需要一個符號存在:
String macAddress = "482C6A1E593D";
System.out.println(macAddress.replaceAll(".{2}(?=.)", "$0:"));
注意你不需要因爲$0
這裏的任何捕獲組是對整個比賽的反向引用(同樣可以與TheLostMind's regex - 使用s.replaceAll("\\w{2}(?!$)", "$0:")
一起使用)。
您應該在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
是的。你正確使用'$ 0'而不捕獲組也會做到這一點:) – TheLostMind