HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

           

          package com.test;

          import java.util.regex.Matcher;
          import java.util.regex.Pattern;

          public class PatternTest {
           
           private static void test0() {
            String str = "<biao><>c<b>x";
            Pattern pattern;
            Matcher matcher;
            // 貪婪: 最長匹配 .* : 輸出: <biao><>c<b>
            pattern = Pattern.compile("<.*>");
            matcher = pattern.matcher(str);
            while (matcher.find()) {
            System.out.println(matcher.group());
            }
            // 不知是否非貪婪 .*? : 輸出: <biao>, <>, <b>
            pattern = Pattern.compile("<.*?>");
            matcher = pattern.matcher(str);
            while (matcher.find()) {
            System.out.println(matcher.group());
            }
            // 使用組, 輸出<>里的內容, 輸出: 'biao', ' ', 'b'
            // 0組代表整個表達式, 子組從1開始
            pattern = Pattern.compile("<(.*?)>");
            matcher = pattern.matcher(str);
            while (matcher.find()) {
            System.out.println(">>"+matcher.group(1));
            }
           }
           
           /** 查找以Java開頭的任意字符串 */
           public static void test1() {
            Pattern pattern = Pattern.compile("^Java.*");
            Matcher m = pattern.matcher("Java哈哈");
            System.out.println(m.find());
           }
           
           /** 以多條件分割字符串 */
           public static void test2() {
            Pattern pattern = Pattern.compile("[,|\\+]+");
            String str[] = pattern.split("Java+ Hello World  Java,Hello,,World|Sun");
            if(str != null) {
             for(String s : str) {
              System.out.println(">> " +s);
             }
            }
           }

           /** 文字替換 */
           public static void test3() {
            Pattern pattern = Pattern.compile("abc*");
            Matcher matcher = pattern.matcher("xabcccc測試abd, abcce");
            String str = matcher.replaceAll("(?)");
            System.out.println(str);
           }
           
           /** 文字替換(替換字符)  結果將會是  x(?)測試(?)d, (?) */
           public static void test4() {
            Pattern pattern = Pattern.compile("123|4(567)");
            Matcher matcher = pattern.matcher("0123456789abcde");
            StringBuffer sb = new StringBuffer();
            while(matcher.find()) {
             System.out.println(matcher.group(0));
             System.out.println(matcher.group(1));
             System.out.println(">>"+ matcher.start()+":"+matcher.end());
             matcher.appendReplacement(sb, "(?)");
            }
            matcher.appendTail(sb);
            System.out.println(sb);
           }
           
           public static void test5() {
            String regEx="B(ond)";
                 
                  String str="My name is Bond. James Bond.";
                  
                  Pattern p=Pattern.compile(regEx);
                  
                  Matcher matcher=p.matcher(str);
                  
                  if(matcher.find()){
                      System.out.println(matcher.groupCount());
                      System.out.println(matcher.start());
                      String group_0 = matcher.group(0);
                      String group_1 = matcher.group(1);
                      System.out.println("Group 0 " + group_0);
                      System.out.println("Group 1 " + group_1);
                      System.out.println(str);
                  }

           }
           
           // 驗證是否為郵箱地址
           public static void test6() {
            String str="ponline@yahoo.com.cn.jcWe--_*";
            Pattern pattern =
            Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+");
            Matcher matcher = pattern.matcher(str);
            System.out.println(matcher.matches());
           }
           
           /** 去除html 標記  */
           public static void test7() {
            Pattern pattern = Pattern.compile(".+?");
            Matcher matcher = pattern.matcher("<a 測試 href=\"index.html\">主頁</a>");
            matcher.find();
            System.out.println(matcher.group());
            String string = matcher.replaceFirst("");
            System.out.println(string);
           }
           
           /** 查找html 中對應條件字符串 **/
           public static void test8() {
            Pattern pattern = Pattern.compile("href=\"(.+?)\"");
            Matcher matcher = pattern.matcher("<a href=\"index.html\">主頁</a>");
            if(matcher.find())
              System.out.println(matcher.group(1));
           }
           /** 截取http://地址  **/
           public static void test9() {
            Pattern pattern = Pattern.compile("(http://|https://){1}.+");
            Matcher matcher = pattern.matcher("dsdsds<http://dfhf.\\sd-: s//國家gfg-ffdfd>fdf");
            StringBuffer buffer = new StringBuffer();
            while(matcher.find()){              
                buffer.append(matcher.group());        
                buffer.append("\r\n"); 
                System.out.println(buffer.toString());
            }
           }
           
           /** 替換指定{}中文字  **/
           public static void test10() {
            String str = "Java目前的發展史是由{0}年-{1}年";
            String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};
            System.out.println(replace(str,object));
           }
           
           public static String replace(String sourceString, String[][] object) {
            String temp=sourceString;    
                  for(int i=0;i<object.length;i++){
                     String[] result=(String[])object[i];
                     Pattern    pattern = Pattern.compile(result[0]);
                     Matcher matcher = pattern.matcher(temp);
                     temp=matcher.replaceAll(result[1]);
                  }
                  return temp;
           }
           
           public static void main(String[] args) throws Exception{
            PatternTest.test10();
           

           }
          }

           



          </script>

          posted on 2012-02-26 20:04 helloworld2008 閱讀(335) 評論(1)  編輯  收藏 所屬分類: java

          評論

          # re: 常用正則表達式例子 2012-03-17 08:23 化肥
          說的很好,學習了

            回復  更多評論
            

          主站蜘蛛池模板: 浮梁县| 德庆县| 化德县| 平舆县| 鄂尔多斯市| 民乐县| 濉溪县| 荥阳市| 桓台县| 石泉县| 敖汉旗| 大同县| 通山县| 庐江县| 普陀区| 龙海市| 金山区| 焉耆| 桓仁| 吴忠市| 榕江县| 五河县| 南开区| 荥经县| 汪清县| 渝中区| 四会市| 宁晋县| 千阳县| 金寨县| 宁南县| 东丽区| 常山县| 鹿邑县| 美姑县| 柯坪县| 徐水县| 宁夏| 常山县| 宁德市| 辽源市|