我有一个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