public class GeneralNumSix {
public static void main(String[] args) {
String mixedRegex = "[\\da-f]";
String[] strs = new String[] { "0", "1", "2", "3","4","9","a","e","f","g","z"};
for (String string : strs) {
if(regexMatch(string,mixedRegex)){
System.out.println(string +"能夠比對正則:" + mixedRegex);
}else{
System.out.println(string +"不能夠比對正則:" + mixedRegex);
}
private static boolean regexMatch(String s, String regex) {
return s.matches(regex);
運作結果:
0能夠比對正則:[\da-f]
1能夠比對正則:[\da-f]
2能夠比對正則:[\da-f]
3能夠比對正則:[\da-f]
4能夠比對正則:[\da-f]
9能夠比對正則:[\da-f]
a能夠比對正則:[\da-f]
e能夠比對正則:[\da-f]
f能夠比對正則:[\da-f]
g不能夠比對正則:[\da-f]
z不能夠比對正則:[\da-f]
注意:
能夠比對數字字元,和小寫a-f之間
除此之外,都不能比對。
特殊的簡記法:點号
點号. 是一個特殊的字元組簡記法,它可以比對幾乎所有字元
\. 比對點号本身
在字元組内部,[.]也隻能比對點号本身
注意:點号不能比對換行符
例子:
public class GeneralNumSeven {
String[] strs = new String[] { "0", "1", "2", "$","{","}",".","[","]","\n"};
String normalDot = ".";
String escapedDot = "\\.";
String characterClassDot = "[.]";
if(regexMatch(string,normalDot)){
System.out.println(string +"能夠比對正則:" + normalDot);
System.out.println(string +"不能夠比對正則:" + normalDot);
if(regexMatch(string,escapedDot)){
System.out.println(string +"能夠比對正則:" + escapedDot);
System.out.println(string +"不能夠比對正則:" + escapedDot);
if(regexMatch(string,characterClassDot)){
System.out.println(string +"能夠比對正則:" + characterClassDot);
System.out.println(string +"不能夠比對正則:" + characterClassDot);
0能夠比對正則:.
1能夠比對正則:.
2能夠比對正則:.
$能夠比對正則:.
{能夠比對正則:.
}能夠比對正則:.
.能夠比對正則:.
[能夠比對正則:.
]能夠比對正則:.
不能夠比對正則:.
0不能夠比對正則:\.
1不能夠比對正則:\.
2不能夠比對正則:\.
$不能夠比對正則:\.
{不能夠比對正則:\.
}不能夠比對正則:\.
.能夠比對正則:\.
[不能夠比對正則:\.
]不能夠比對正則:\.
不能夠比對正則:\.
0不能夠比對正則:[.]
1不能夠比對正則:[.]
2不能夠比對正則:[.]
$不能夠比對正則:[.]
{不能夠比對正則:[.]
}不能夠比對正則:[.]
.能夠比對正則:[.]
[不能夠比對正則:[.]
]不能夠比對正則:[.]
不能夠比對正則:[.]
可見\\.隻能比對點号,字元組内的[.]也隻能比對點号
也就是說點号在字元組内部,或者以轉義形式給出的時候,隻能比對點号本身。
請注意:點号不能比對換行符
小結:
字元組
用來規定某個位置能夠出現的字元
在[...]結構中,方括号内列出的字元
用連字元可以表示範圍
用[^...]表示排除型字元組,列出不容許出現的字元
排除型字元組仍然需要比對一個字元
字元組簡記法,常見的6種簡記
特殊的簡記法:點号,比對除換行符之外的所有字元。
本文轉自jooben 51CTO部落格,原文連結:http://blog.51cto.com/jooben/317156