?? jdk提供的正則表達式是非常強大的,只要用過正則表達式的程序員應該是為其功能嘆為觀止。不過,正則表達式中的一個group概念相信應該不多人熟悉。
??? 正則表達式中的group,主要是用來區分子序列的,所謂子序列是用()之內的表達式。下面以一段程序為例
????????String?regex?=?"\\$\\{(I)(love)(java)\\}";
????????System.out.println(Pattern.compile(regex).matcher("${Ilovejava}P)").groupCount());
?運行上面的代碼段,結果為:3
?其中(I)為一個組, (love)為一個組,(java)為一個組。
??
? 也許有人覺得這只是一個小功能,但是正則表達式的group,還有一個更加強大的地方就是在String.replaceAll方法中。
? public
StringreplaceAll(
String?regex,
????????????????????????
String?replacement)
?其中第一個參數當然是政則表達式,第二個一般是普通的文本;但是第二個參數可以應用group的地方,這個功能用在一些場合是非常方便的。
??????比如,下面這個例子? <driverClass>${driverClass}</driverClass>,要將${}去掉,即將這個例子替換成<driverClass>driverClass</driverClass>,可以用下面的代碼來替換。例如
????????String?text?=?"<driverClass>${driverClass}</driverClass>";
????????String?result?=?replaceStr(text,"\\$\\{(driverClass)\\}","$1");
????????System.out.println("result?is:"+result);?? 運行結果:result is:<driverClass>driverClass</driverClass>
? 從上面可以看出,$1就是正則表達式中匹配的第一個序列,同樣$2...表示第幾個序列。如果$index中的index超出了表達式中子序列的個數的話,將拋出異常信息。 $0表示整個正則表達式。
posted on 2006-08-15 15:30
jspark 閱讀(495)
評論(0) 編輯 收藏