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

          ?? 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 閱讀(498) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 辉南县| 冕宁县| 大洼县| 会宁县| 米泉市| 古丈县| 西和县| 双城市| 凤庆县| 留坝县| 观塘区| 江都市| 东乡县| 岳西县| 左云县| 兴业县| 岚皋县| 定安县| 慈利县| 榕江县| 册亨县| 吐鲁番市| 米泉市| 阳江市| 贵溪市| 城步| 凌云县| 镇平县| 彰化市| 龙山县| 兰坪| 十堰市| 两当县| 桦川县| 陇川县| 大城县| 遂溪县| 永寿县| 洛隆县| 会理县| 佛教|