各位帮忙解决个小问题哈,请问这种格式的字符串在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(""));