1、元字符(metacharacters):元字符是指那些可以代表特殊含義的字符,java.util.regex支持的元字符包括
([{\^-$|]})?*+.。注意,在某些時(shí)候這些特殊的字符并不一定代表特殊含義,例如 - 在[a-c]中是元字符,但在 a-c 則不表示特殊含義。不過(guò)上面沒(méi)列出的字符則一定不會(huì)代表特殊含義。
2、可以對(duì)元字符進(jìn)行轉(zhuǎn)義,主要有兩種方法:
- 在元字符前面加一個(gè)反斜杠 (backslash)\
- 用 \Q 和 \E包含起來(lái),例如 \? == \Q?\E
3、Character Classes :這里的class并不是Java中的class,在正則表達(dá)式中,一個(gè)character class是由一系列包含在方括號(hào)中的字符組成,它能在輸入的一系列字符串中匹配一個(gè)字符,例如[a-d]匹配a, b, c, d,中的任何一個(gè)字符。再看下面一個(gè)例子(摘自
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 之間的運(yùn)算:從上面的表格也可以看出 character classes包含了幾個(gè)跟集合操作很相似的操作:例如negation(補(bǔ))、union(并)、intersection(交)、subtraction(差)。由上面的表格也可以看出兩個(gè)Character Classes之間的運(yùn)算只需要簡(jiǎn)單地將一個(gè)Character Classes嵌入到另一個(gè)Character Classes并使用正確的操作符就可以了。
5、Predefined Character Classes:java.util.regex.* 包含了一些預(yù)先定義的 Character Classes,在實(shí)際中可以很方便地運(yùn)用:(摘自
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] |