隨筆-124  評論-49  文章-56  trackbacks-0

           

          public class ReEX {
              
          /**
               * 
          @param args
               
          */

              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args){

                  
          //正則表達式
                  
          //用途:字符匹配\字符查找\字符替換
                  
          //類:
                  
          //-1-java.lang.String
                  
          //-2-java.util.regex.Pattern
                  
          //-3-java.util.regex.Matcher
                  
                  
          //.代表一個字符,例:
                  
          //p("abc".matches(""))
                  
                  
          //replaceAll(regex, replacement)方法
                  
          //p("a8789a".replaceAll("\\d", "-"));
                  
                  
          //Pattern類--代表匹配字符串的模式,使用Pattern.compile(arg0)方法
                  
          //[a-z]a到z中的一個字符;[a-z]{3}a到z中的任三個字符
                  
                  
          //Pattern類的matcher(string)方法--用模式匹配某個字符串(String實現了CharSequence字符序列的接口)
                  
                  
          //Matcher類的matches()方法--得到結果
                  
          //Pattern p = Pattern.compile("[a-z]{3}");
                  
          //Matcher m=p.matcher("fgh");//Matcher是一個匹配器用于存儲結果
                  
          //p(m.matches());
                  
          //以上代碼同于p(fgh.matches([a-z]{3}));
                  
                  
          //*零個或多個 
                  
                  
          //+一個或多個
                  
                  
          //?零個或一個
                  
          //例子
                  /*p("a".matches("."));
                  p("aa".matches("aa"));
                  p("aaaa".matches("a*"));
                  p("aaaa".matches("a+"));
                  p("aaaa".matches("a?"));//false
                  p("".matches("a*"));
                  p("234324324123".matches("\\d{3,100}"));
                  p("192.168.0.aaa".matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}."));//false
                  p("192".matches("[0-2][0-9][0-9]"));
          */

                  
                  
          //范圍[]其中一個字符  ^取反  -代表一個范圍  |或者   &&取交集
                  /*p("a".matches("[abc]"));
                  p("a".matches("[^abc]"));
                  p("A".matches("[a-zA-Z]"));
                  p("A".matches("[a-z]|[A-Z]"));
                  p("A".matches("[a-z[A-Z]]"));
                  p("R".matches("[A-Z&&[RFG]]"));
          */

                  
                  
          //認識 \s一個空白字符 \一個構成單詞的字符 \d 代表一個數字
                  
          //    \S上面取反            \W上面取反                       \D上面取反    
                  /*p(" \n\r\t".matches("\\s{4}"));
                  p(" ".matches("\\S"));
                  p("a_8".matches("\\w{3}"));
                  p("abc888&^".matches("[a-z]{1,3}\\d+[&^#]+"));
                  p("\\".matches("\\\\"));
          */

                  
                  
          //邊界處理
                  /*p("hello sir".matches("^h.*"));
                  p("hello sir".matches(".*ir$"));
                  p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
                  p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
                  p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//空白行
          */

                  
                  
          //練習
                  /*p("aaa 8888c".matches(".*\\d{4}."));
                  p("aaa 8888c".matches(".*\\b\\d{4}."));
                  p("aaa8888c".matches(".*\\d{4}."));
                  p("aaa8888c".matches(".*\\b\\d{4}."));
          */

                  
                  
          //email
                  
          //p("safsadfsdafsafasf@dsafsaf.com".matches("[\\w[.-]+@[\\w[.-]]]+\\.[\\w]+"));
                  
                  
          //find();依次順序查找子串    lookingAt();每次從開始位置開始查找子串 m.start()找到的起始位,m.end()找到的子串未位,找不到使用會報錯
                  
                  
          /*Pattern p=Pattern.compile("\\d{3,5}");
                  String s="123-23234-343-00";
                  Matcher m=p.matcher(s);
                  p(m.matches());
                  m.reset();//把原來吃進的子串給吐出來
                  p(m.find());
                  p(m.start()+"-"+m.end());//m.start()找到的起始位,m.end()找到的子串未位,找不到使用會報錯
                  p(m.find());
                  p(m.find());
                  p(m.find());
                  
                  p(m.lookingAt());
                  p(m.lookingAt());
                  p(m.lookingAt());
                  p(m.lookingAt());
          */

                  
                  
          //replacement()--字符串的替換
                  /*Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//Pattern.CASE_INSENSITIVE 略大小寫
                  Matcher m=p.matcher("java Java JAVa IloveJAVA you hateJava");
                  StringBuffer buf=new StringBuffer();
                  int i=0;
                  //p(m.replaceAll("JAVA"));
                  while(m.find())
                  {
                      i++;
                      if(i%2==0)
                      {
                          m.appendReplacement(buf, "java");
                      }
                      else
                      {
                          m.appendReplacement(buf, "JAVA");
                      }
                  }
                  p(buf);
          */

                  
                  
          //分組
                  /*Pattern p=Pattern.compile("(\\d{3,5})([a-z]{2})");
                  String s="123aa-34345bb-234cc-00";
                  Matcher m=p.matcher(s);
                  while(m.find())
                  {
                      p(m.group());
                      //p(m.group(1));
                      //p(m.group(2));
                  }
          */

                  
                  
          //(?=a)不捕獲a  .{3}(?=a)為444;.{3}(?!a)為66b
                  /*Pattern p = Pattern.compile(".{3}(?!a)");
                  String s = "444a66b";
                  Matcher m = p.matcher(s);
                  while(m.find()) {
                      p(m.group());
                  }
          */


                  
          //back refenrences向前引用(\\d\\d)\\1
                  
          //Pattern p = Pattern.compile("(\\d\\d)\\1");
                  
          //String s = "1212";
                  /*Pattern p = Pattern.compile("(\\d(\\d))\\2");
                  String s = "122";
                  Matcher m = p.matcher(s);
                  p(m.matches());
          */

                  
                  
          //flages的簡寫
                  
          //Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
                  
          //p("Java".matches("(?i)(java)")); //同上
              }

              
          public static void p(Object o){
                  System.out.println(o);
              }

          }

          class Rexg
          {
              public static 
          void main(String[] args)
              
          {
                  
          // \d{5}(-\d{4})?    ?表示上面的可有可無
                  /*p("10101".matches("\\d{5}(-\\d{4})?"));
                  p("10101-1234".matches("\\d{5}(-\\d{4})?"));
                  p("abc".matches("abc?"));
                  p("ab".matches("abc?"));
                  p("abc".matches("a(bc)?"));
                  p("a".matches("a(bc)?"));
          */

                  
                  
          //子匹配  用()括起 \1表示每一個()中的子匹配 
                  //1221,3553可表示為(\d)(\d)\2\1
                  //11111,22222可表示為(\d)\1{4}
                  
                  
          //作用:1有效性驗證 2 替換內容 3查找某一類形的文本
                  
              }

              public static 
          void p(Object obj)
              
          {
                  System.out.println(obj);
              }

          }
          posted on 2009-11-03 10:15 junly 閱讀(154) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 息烽县| 厦门市| 武鸣县| 安庆市| 九寨沟县| 清丰县| 卓尼县| 和田县| 胶州市| 徐闻县| 嘉鱼县| 吴堡县| 綦江县| 西昌市| 武鸣县| 瑞金市| 长治市| 扬州市| 时尚| 乌鲁木齐县| 余姚市| 武安市| 苍梧县| 延津县| 平安县| 莒南县| 区。| 安溪县| 西青区| 连平县| 化德县| 黑水县| 锡林郭勒盟| 田东县| 北辰区| 青冈县| 昌乐县| 象山县| 宜春市| 松江区| 孙吴县|