文章目录
一、*号的异常
- 现象:
在使用字符串分离时,直接使用"*"
号,导致抛出异常,名为“Dangling meta character '*' near index 0
” - 原因:
因为+
、*
、|
、\
等符号在正则表达示中有相应的不同意义,所以在使用时要进行转义处理 - 解决方法:
split("\\*")
或者split("[*]")
PS:一个\
表示不行(这样是表示转义字符\*
,像是\n
),两个\
表示才行(\\*
这样是表示出字符\
)
/**
* 抛出异常
*/
String[] arr = "3*2".split("*");
for(String item:arr) {
System.out.println(item);
}
/**
* 解决:split("\\*")或者split("[*]")
*/
String[] arr1 = "3*2".split("\\*");
for(String item:arr1) {
System.out.println(item);
}
/*
3
2
*/
String[] arr2 = "3*2".split("[*]");
for(String item:arr2) {
System.out.println(item);
}
/*
3
2
*/
二、正则表达式符号冲突扩展
*
(代表正则表达式中的星闭包运算):split("\\*")
或者split("[*]")
+
(代表正则表达式中的正闭包运算):split("\\+")
或者split("[+]")
?
(代表正则表达式中的可缺省运算):split("\\?")
或者split("[?]")
|
(代表正则表达式中的或运算):split("\\|")
或者split("[|]")
^
:只能split("\\^")
,不能split("[^]")
(Unclosed character class near index 2 [^]
)\
:都不行split("\\\")
(Unresolved compilation problem: String literal is not properly closed by a double-quote
)split("[\]")
(Unresolved compilation problem: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
)
参考: