ZiYangZhou

执行如下的代码

public class App {
	public static void main(String[] args) {
		String str = "123+456+712";
		String[] strings = str.split("+");
		System.out.println(Arrays.toString(strings));
	}
}

抛出异常

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character \'+\' near index 0

^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at zx.test.App.main(App.java:12)

出现这种情况的原因是因为String类的分割方法split接受的参数是一个正则表达式,而+这个字符是正则表达式的元字符,需要进行转义,不然就会抛出异常。String类的split方法如下。

public String[] split(String regex) {
    return split(regex, 0);
}

java的正则中的转义使用\\,因此修改之。\\++从元字符转换成普通的+字符。

public class App {
	public static void main(String[] args) {
		String str = "123+456+712";
		String[] strings = str.split("\\+");
		System.out.println(Arrays.toString(strings));
	}
}

参考

读懂正则表达式就这么简单
Java正则表达式的语法与示例

分类:

技术点:

相关文章:

  • 2021-12-22
  • 2021-08-09
  • 2022-01-18
  • 2021-06-27
  • 2021-08-09
  • 2021-11-22
  • 2021-08-02
  • 2022-12-23
猜你喜欢
  • 2021-09-18
  • 2022-12-23
  • 2022-12-23
  • 2022-02-24
  • 2021-06-24
  • 2022-01-20
  • 2021-12-11
相关资源
相似解决方案