1、元字符(metacharacters):元字符是指那些可以代表特殊含义的字符,java.util.regex支持的元字符包括
([{\^-$|]})?*+.。注意,在某些时候这些特殊的字符并不一定代表特殊含义,例如 - 在[a-c]中是元字符,但在 a-c 则不表示特殊含义。不过上面没列出的字符则一定不会代表特殊含义。
2、可以对元字符进行转义,主要有两种方法:
- 在元字符前面加一个反斜杠 (backslash)\
- 用 \Q 和 \E包含起来,例如 \? == \Q?\E
3、Character Classes :这里的class并不是Java中的class,在正则表达式中,一个character class是由一系列包含在方括号中的字符组成,它能在输入的一系列字符串中匹配一个字符,例如[a-d]匹配a, b, c, d,中的任何一个字符。再看下面一个例子(摘自
java.sun.com)
Character Classes |
[abc] |
a, b, or c (simple class)
|
[^abc] |
Any character except a, b, or c (negation)
|
[a-zA-Z] |
a through z, or A through Z, inclusive (range)
|
[a-d[m-p]] |
a through d, or m through p: [a-dm-p] (union)
|
[a-z&&[def]] |
d, e, or f (intersection)
|
[a-z&&[^bc]] |
a through z, except for b and c: [ad-z] (subtraction)
|
[a-z&&[^m-p]] |
a through z, and not m through p: [a-lq-z] (subtraction) |
4、Character Classes 之间的运算:从上面的表格也可以看出 character classes包含了几个跟集合操作很相似的操作:例如negation(补)、union(并)、intersection(交)、subtraction(差)。由上面的表格也可以看出两个Character Classes之间的运算只需要简单地将一个Character Classes嵌入到另一个Character Classes并使用正确的操作符就可以了。
5、Predefined Character Classes:java.util.regex.* 包含了一些预先定义的 Character Classes,在实际中可以很方便地运用:(摘自
java.sun.com )
Predefined Character Classes |
. |
Any character (may or may not match line terminators)
|
\d |
A digit: [0-9] |
\D |
A non-digit: [^0-9] |
\s |
A whitespace character: [ \t\n\x0B\f\r] |
\S |
A non-whitespace character: [^\s] |
\w |
A word character: [a-zA-Z_0-9] |
\W | A non-word character: [^\w] |