码迷,mamicode.com
首页 > 编程语言 > 详细

java 正则表达式入门

时间:2015-04-25 01:42:05      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   java   

1.什么是正则表达式

2.正则表达式的基础

2.1元字符

2.2 []–方括号
方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
reg=”[abc]4” 则”a4”,”b4”,”c4”,都是和此正则表达式匹配的字符串
[^456] —–代表4,5,6之外的任何字符
[a-r] ——-代表a~r中的任何一个字母
[a-Za-Z] ——代表任意一个英文字母
[a-e[g-z]] ——代表a~e或g~z中的任意一个字母
[a-o&&[def]] ——代表字母d,e,f(交运算)
[a-o&&[^bc]] ——代表字母a,d(差运算)

2.3()–括号
将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。

2.4使用限定修饰符来限定元字符出现的次数

3.正则表达式的几个样例

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

public class Regular { 

      public static String regexIsDigital = "\\d+";
      //字符串是否是数字
      public static String regexIsAlpha ="\\p{Alpha}+"; 
      //字符串是否是字母
      public static String regexIsID="\\d{15}|\\d{18}";
      //字符串是否是15位或18位的身体证号码
       public static String regexIsJJJStartKKKEnd="^JJJ.*KKK$";
       //字符串是否是JJJ开头KKK结尾
       public static String regexIsTelePhoneNumber ="[0-9]{3,4}\\-?[0-9]+";
       //字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字
       public static String regexIsEmail = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";   //X@X.com.cn
       public static String regexIsHanZi="[\u4e00-\u9fa5]{1,}";
       //字符串是否是汉字
       public static String regexIsStartJava = "^Java.*";
       //查找以Java开头,任意结尾的字符串      
       public static String regexSplit ="[, |]+";
       //以多条件分割字符串时

       public static void main(String[] args) {
              testIsDigit();
              testIsAlpha();
              testIsID();
              testStartEnd();
              testIsTelePhoneNum();
              testEmailAddre();
              testIsHanZi();          
              testIsStartJava();
              testSplit();             
              testReplace();
              testPattern();
         }

 private static void testPattern() {
     Pattern pattern = Pattern.compile("");
     System.out.println(pattern.matches("[0-9]{6}", "200038")); 
     System.out.println(pattern.matches("\\d{6}", "200038")); 
  }

  private static void testReplace() {  
      Pattern pattern = Pattern.compile("正则表达式");
      Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
      //替换第一个符合正则的数据          
      System.out.println(matcher.replaceFirst("Java"));
      pattern = Pattern.compile("正则表达式");
      matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
      //替换所有符合正则的数据                 
      System.out.println(matcher.replaceAll("Java"));
  }

  private static void testSplit() {
      Pattern pattern = Pattern.compile(regexSplit);
      String data = "Java Hello World  Java,Hello,,World|Sun";
      System.out.println(data+" split by:"+regexSplit);
      String[] strs = pattern.split(data);
      for (int i=0;i<strs.length;i++) {
          System.out.println(strs[i]);
      }
    }

   private static void testIsStartJava() {
      pressInfoByPattern("Java不是人",regexIsStartJava);
      pressInfoByPattern("dJava不是人",regexIsStartJava);
   }

   private static void testIsHanZi() {
       pressInfo("验证汉字",regexIsHanZi);
   }

   private static void testIsTelePhoneNum() {
      pressInfo("0733-5544",regexIsTelePhoneNumber);
      pressInfo("073-566544",regexIsTelePhoneNumber);
      pressInfo("073566544",regexIsTelePhoneNumber);
      pressInfo("073--566544",regexIsTelePhoneNumber);
   }

    private static void testStartEnd() {
       pressInfo("JJJKKK",regexIsJJJStartKKKEnd);                 
       pressInfo("JJJaaaaKKK",regexIsJJJStartKKKEnd);                
       pressInfo("JJaaaaKKK",regexIsJJJStartKKKEnd);              
       pressInfo("JJJaaaaKK",regexIsJJJStartKKKEnd);
    }

    private static void testIsID() {
       pressInfo("111111111111111",regexIsID);
       pressInfo("11111111111111",regexIsID);     
       pressInfo("111111111111122221",regexIsID);
       pressInfo("11111111111112222",regexIsID);                 
    }

    private static void testIsAlpha() {
       pressInfo("da",regexIsAlpha);
       pressInfo("d1a",regexIsAlpha);
    }

    private static void testIsDigit() {             
       pressInfo("21452",regexIsDigital);
       pressInfo("21a452",regexIsDigital);
       pressInfo("021452",regexIsDigital);
    }

    private static void testEmailAddre() {
        pressInfo("aaa@",regexIsEmail);
        pressInfo("aaaaaaaa",regexIsEmail);        
        pressInfo("11111@11111fffyu.dfg.com",regexIsEmail);                
     }

     private static void pressInfo(String data,String regex) {
        if(data.matches(regex)){
             System.out.println(data+":is match regex:"+regex);
         }else{
         System.out.println(data+":is not match regex:"+regex);
         }
      }

      private static void pressInfoByPattern(String data,String regex) {             
       Pattern pattern = Pattern.compile(regex);
       Matcher matcher = pattern.matcher(data);
       if(matcher.matches()){
            System.out.println(data+":is match regex:"+regex);
        }else{
          System.out.println(data+":is not match regex:"+regex);
        }
    }
}

java 正则表达式入门

标签:正则表达式   java   

原文地址:http://blog.csdn.net/hfreeman2008/article/details/45256233

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!