隨筆-16  評論-54  文章-0  trackbacks-0

          ?? jdk提供的正則表達(dá)式是非常強(qiáng)大的,只要用過正則表達(dá)式的程序員應(yīng)該是為其功能嘆為觀止。不過,正則表達(dá)式中的一個group概念相信應(yīng)該不多人熟悉。

          ??? 正則表達(dá)式中的group,主要是用來區(qū)分子序列的,所謂子序列是用()之內(nèi)的表達(dá)式。下面以一段程序為例

          ????????String?regex?=?"\\$\\{(I)(love)(java)\\}";
          ????????System.out.println(Pattern.compile(regex).matcher("${Ilovejava}P)").groupCount());

          ?運(yùn)行上面的代碼段,結(jié)果為:3
          ?其中(I)為一個組, (love)為一個組,(java)為一個組。

          ??
          ? 也許有人覺得這只是一個小功能,但是正則表達(dá)式的group,還有一個更加強(qiáng)大的地方就是在String.replaceAll方法中。
          ? public StringreplaceAll(String?regex,
          ???????????????????????? String?replacement)

          ?其中第一個參數(shù)當(dāng)然是政則表達(dá)式,第二個一般是普通的文本;但是第二個參數(shù)可以應(yīng)用group的地方,這個功能用在一些場合是非常方便的。
          ??????比如,下面這個例子? <driverClass>${driverClass}</driverClass>,要將${}去掉,即將這個例子替換成<driverClass>driverClass</driverClass>,可以用下面的代碼來替換。例如
          ????????String?text?=?"<driverClass>${driverClass}</driverClass>";
          ????????String?result?=?replaceStr(text,"\\$\\{(driverClass)\\}","$1");
          ????????System.out.println("result?is:"+result);

          ?? 運(yùn)行結(jié)果:result is:<driverClass>driverClass</driverClass>
          ? 從上面可以看出,$1就是正則表達(dá)式中匹配的第一個序列,同樣$2...表示第幾個序列。如果$index中的index超出了表達(dá)式中子序列的個數(shù)的話,將拋出異常信息。 $0表示整個正則表達(dá)式。
          posted on 2006-08-15 15:30 jspark 閱讀(498) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 水富县| 蕲春县| 通城县| 台中县| 永新县| 高尔夫| 德阳市| 宝坻区| 泗阳县| 阳朔县| 罗定市| 廉江市| 桃源县| 双桥区| 南宫市| 汾阳市| 昌图县| 高邑县| 玉田县| 共和县| 洪湖市| 本溪市| 定边县| 十堰市| 山东省| 乌鲁木齐市| 寿阳县| 沅江市| 肥乡县| 祁东县| 辽源市| 马山县| 楚雄市| 左权县| 克东县| 乾安县| 九江市| 抚远县| 明光市| 屏南县| 霞浦县|