天天看點

正規表達式 學習筆記2.1

徒弟:師傅呀,正則怎麼用呀?搞個有條理性的東東給我看看吧!

師傅:也對,沒條理的東西,不懂的人,看了更加暈,先講講:字元組。

1、基本功能

字元組:

l 正規表達式的最基本結構之一

l 作用:規格某個位置能夠出現的字元

l 形式:以[...]給出,在方括号内列出字元

執行個體:

判斷10進制數值,隻要能夠判斷每個數字出現在0-9之間,那就是10進制數值。

public class GeneralNumTest {

public static void main(String[] args) {

String[] octDigits = new String[] { "0", "1", "2", "3","4","5","6","7","8","9"};

String[] hexDigits = new String[] { "0", "1", "2", "3","4","5","6","7","8","9",

 "a", "b", "c", "d","e","f"};

String octDigitRegex = "[0123456789]";

String hexDigitRegex = "[0123456789abcdef]";

for (String octDigit : octDigits) {

if(regexMatch(octDigit,octDigitRegex)){

System.out.println("10進制數值:" + octDigit +"能夠比對正則:" + octDigitRegex);

}else{

System.out.println("10進制數值:" + octDigit +"不能夠能夠比對正則:" + octDigitRegex);

}

for (String hexDigit : hexDigits) {

if(regexMatch(hexDigit,hexDigitRegex)){

System.out.println("16進制數值:" + hexDigit +"能夠比對正則:" + hexDigitRegex);

System.out.println("16進制數值:" + hexDigit +"不能夠能夠比對正則:" + hexDigitRegex);

private static boolean regexMatch(String s, String regex) {

return s.matches(regex);

運作結果:

10進制數值:0能夠比對正則:[0123456789]

10進制數值:1能夠比對正則:[0123456789]

10進制數值:2能夠比對正則:[0123456789]

10進制數值:3能夠比對正則:[0123456789]

10進制數值:4能夠比對正則:[0123456789]

10進制數值:5能夠比對正則:[0123456789]

10進制數值:6能夠比對正則:[0123456789]

10進制數值:7能夠比對正則:[0123456789]

10進制數值:8能夠比對正則:[0123456789]

10進制數值:9能夠比對正則:[0123456789]

16進制數值:0能夠比對正則:[0123456789abcdef]

16進制數值:1能夠比對正則:[0123456789abcdef]

16進制數值:2能夠比對正則:[0123456789abcdef]

16進制數值:3能夠比對正則:[0123456789abcdef]

16進制數值:4能夠比對正則:[0123456789abcdef]

16進制數值:5能夠比對正則:[0123456789abcdef]

16進制數值:6能夠比對正則:[0123456789abcdef]

16進制數值:7能夠比對正則:[0123456789abcdef]

16進制數值:8能夠比對正則:[0123456789abcdef]

16進制數值:9能夠比對正則:[0123456789abcdef]

16進制數值:a能夠比對正則:[0123456789abcdef]

16進制數值:b能夠比對正則:[0123456789abcdef]

16進制數值:c能夠比對正則:[0123456789abcdef]

16進制數值:d能夠比對正則:[0123456789abcdef]

16進制數值:e能夠比對正則:[0123456789abcdef]

16進制數值:f能夠比對正則:[0123456789abcdef]

以連字元'-'表示範圍:

l [0123456789]的表示法過于累贅,可以用範圍表示法簡要描述

l [0123456789] = [0-9]

l [0-789] = [0-9]

l [0123456789abcdef] = [0-9a-f]

剛剛的例子,可以修改為:

String octDigitRegex = "[0-9]";

String hexDigitRegex = "[0-9a-f]";

關于連字元的注意事項:

l 在字元組内部,隻有當連字元出現在兩個字元之間時,才能表示字元的範圍;

l 如果出現在字元組的開頭,則隻能表示單個字元'-',就是連字元本身。

例如:

public class GeneralNumTwo {

String[] characters = new String[] { "a", "b", "c", "d","e","f","g","-"};

String regex1 = "[a-g]";

String regex2 = "[-ag]";

for (String character : characters) {

if(regexMatch(character,regex1)){

System.out.println("字元:" + character +"能夠比對正則:" + regex1);

System.out.println("字元:" + character +"不能夠能夠比對正則:" + regex1);

if(regexMatch(character,regex2)){

System.out.println("字元:" + character +"能夠比對正則:" + regex2);

System.out.println("字元:" + character +"不能夠能夠比對正則:" + regex2);

字元:a能夠比對正則:[a-g]

字元:b能夠比對正則:[a-g]

字元:c能夠比對正則:[a-g]

字元:d能夠比對正則:[a-g]

字元:e能夠比對正則:[a-g]

字元:f能夠比對正則:[a-g]

字元:g能夠比對正則:[a-g]

字元:-不能夠比對正則:[a-g]

字元:a能夠比對正則:[-ag]

字元:b不能夠比對正則:[-ag]

字元:c不能夠比對正則:[-ag]

字元:d不能夠比對正則:[-ag]

字元:e不能夠比對正則:[-ag]

字元:f不能夠比對正則:[-ag]

字元:g能夠比對正則:[-ag]

字元:-能夠比對正則:[-ag]

本文轉自jooben 51CTO部落格,原文連結:http://blog.51cto.com/jooben/317152

繼續閱讀