一些常见的转义
\ 反斜杠
\t 间隔
\n 换行
\r 回车
\d 数字 等价于
\D 非数字 等价于
\s 空白符号
\S 非空白符号
\w 单独字符
\W 非单独字符
\f 换页符
\e Escape
\b 一个单词的边界
\B 一个非单词的边界
\G 前一个匹配的结束
一些具体使用场景
1、如果用“.”作为分隔的话必须是如下写法String.split("\\."),
这样才能正确的分隔开不能用String.split(".");
2、如果用“|”作为分隔的话必须是如下写法String.split("\\|"),
这样才能正确的分隔开不能用String.split("|");“.”和“|”都是转义字符必须得加"\";
3、如果在一个字符串中有多个分隔符可以用“|”作为连字符比如“acount=?and uu =? or n=?”,
把三个都分隔出来可以String.split("and|or");
使用String.split
方法分隔字符串时分隔符如果用到一些特殊字符可能会得不到我们预期的结果。 我们看jdk doc中说明
public String[] split(String regex)
Splits this string around matches of the given regular expression.
参数regex是一个 regular-expression的匹配模式而不是一个简单的String他对一些特殊的字符可能会出现你预想不到的结果比如测试下面的代码用竖线 | 分隔字符串你将得不到预期的结果
String[] aa = "aaa|bbb|ccc".split("|");
//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果
for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println("--"+aa[i]);
}
用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常用加号 + 也是如此。
String[] aa = "aaa*bbb*ccc".split("*");
//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果
for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println("--"+aa[i]);
}
显然+ * 不是有效的模式匹配规则表达式用"\*" “\+“转义后即可得到正确的结果。”|” 分隔串时虽然能够执行但是却不是预期的目的"\|“转义后即可得到正确的结果。还有如果想在串中使用”“字符则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\bbbb”,如果要分隔就应该这样才能得到正确结果String[] aa = “aaa\bbb\bccc”.split("\\");