Java中split和正则表达式

正则表达式中常见通配符:

对于单字符串比较而言,使用正则表达式没有什么优势.
Regex的真正强大之处在于体现在包括字符类和量词(*,+,?)的更复杂的模式上.

字符类包括:
\d 数字
\D 非数字
\w 单字字符(0-9,A-Z,a-z)
\W 非单字字符
\s 空白(空格符,换行符,回车符,制表符)
\S 非空白
[] 由方括号内的一个字符列表创建的自定义字符类
. 匹配任何单个字符
下面的字符将用于控制将一个子模式应用到匹配次数的过程.
? 重复前面的子模式0次到一次
* 重复前面的子模式0次或多次
+ 重复前面的子模式一次到多次

java的转义字符

1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' \0:空字符
2.Unicode转义字符:\u + 四个十六进制数字;0~65535 \u0000:空字符
3.特殊字符:就3个
\":双引号
\':单引号
\\:反斜线
4.控制字符:5个
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C

后来改成:
String s="an|ddd|aed" 执行 String re[]=s.split(\\u007C);
或者String re[]=s.split("\\|");
结果就是我想要的了 re[0]="an" re[1]="ddd" re[2]="aed"

\\ 反斜杠
\t 间隔 ('\u0009')
\n 换行 ('\u000A')
\r 回车 ('\u000D')
\d 数字 等价于 [0-9]
\D 非数字 等价于 [^0-9]
\s 空白符号 [\t\n\x0B\f\r]
\S 非空白符号 [^\t\n\x0B\f\r]
\w 单独字符 [a-zA-Z_0-9]
\W 非单独字符 [^a-zA-Z_0-9]
\f 换页符
\e Escape
\b 一个单词的边界
\B 一个非单词的边界
\G 前一个匹配的结束

加入特定限制条件「 [] 」
[a-z] 条件限制在小写 a to z 范围中一个字符
[A-Z] 条件限制在大写 A to Z 范围中一个字符
[a-zA-Z] 条件限制在小写 a to z 或大写 A to Z 范围中一个字符
[0-9] 条件限制在小写 0 to 9 范围中一个字符
[0-9a-z] 条件限制在小写 0 to 9 或 a to z 范围中一个字符
[0-9[a-z]] 条件限制在小写 0 to 9 或 a to z 范围中一个字符 ( 交集 )

[] 中加入 ^ 后加再次限制条件「 [^] 」
[^a-z] 条件限制在非小写 a to z 范围中一个字符
[^A-Z] 条件限制在非大写 A to Z 范围中一个字符
[^a-zA-Z] 条件限制在非小写 a to z 或大写 A to Z 范围中一个字符
[^0-9] 条件限制在非小写 0 to 9 范围中一个字符
[^0-9a-z] 条件限制在非小写 0 to 9 或 a to z 范围中一个字符

[^0-9[a-z]] 条件限制在非小写 0 to 9 或 a to z 范围中一个字符 ( 交集 )

在限制条件为特定字符出现 0 次以上时,可以使用「 * 」
J* 0 个以上 J
.* 0 个以上任意字符
J.*D J 与 D 之间 0 个以上任意字符

在限制条件为特定字符出现 1 次以上时,可以使用「 + 」
J+ 1 个以上 J
.+ 1 个以上任意字符
J.+D J 与 D 之间 1 个以上任意字符

在限制条件为特定字符出现有 0 或 1 次以上时,可以使用「 ? 」
JA? J 或者 JA 出现

限制为连续出现指定次数字符「 {a} 」
J{2} JJ
J{3} JJJ
文字 a 个以上,并且「 {a,} 」
J{3,} JJJ,JJJJ,JJJJJ,???(3 次以上 J 并存 )
文字个以上, b 个以下「 {a,b} 」
J{3,5} JJJ 或 JJJJ 或 JJJJJ
两者取一「 | 」
J|A J 或 A
Java|Hello Java 或 Hello

相关文档
最新文档