请问匹配这种格式的正则表达式怎么写?

各位帮忙解决个小问题哈,请问这种格式的字符串在JAVA里面怎么用正则表达式去匹配。
例子:test123[em:3:]5678[em:4:],分割成test123,5678两个。
[b]问题补充:[/b]
方括号也需要匹配
[b]问题补充:[/b]
各位的\可以java里面用吗?我的怎么会报错呢??

[color=blue]试试我的:[/color]
[code="java"]
@Test
public void testRegx3() {

    String source = "test123[em:3:]5678[em:4:]";

    String[] result = source.split("(\\u005B)(\\u0065)(\\u006D)(\\u003A)[0-9](\\u003A)(\\u005D)");

    System.out.println("分割后的结果:");

    System.out.println(Arrays.toString(result));

}

[/code]

[color=blue][b]注意,使用\无法转换“[”或“]”,所以采用Unicode编码的方式替代[/b][/color]

分隔符应该可以写成 "[em:{\d}:]"

如果是特殊字符的话,就前面加上"\"就行了

"\[em:{\d}:\]"

[color=blue]也可以这样:

\u005Bem:[0-9]:\u005D

其中:u005B 是 [

  u005D 是 ]

[/color]

Pattern pattern = Pattern.compile("[.+?]",Pattern.DOTALL);
Matcher matcher1 = pattern.matcher("test123[em:3:]5678[em:4:]");
Matcher matcher2 = pattern.matcher(matcher1.replaceFirst(","));
System.out.println(matcher2.replaceFirst(""));