我的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
我想忽略最后一场比赛以避免使用最后一场比赛:
答案 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:"))