首页 > 代码库 > 正则表达式在java程序中的使用

正则表达式在java程序中的使用

package com.boco;


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

public class TestReg {

  /**
  * 验证传入的字符串是否整个匹配正则表达式
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 若匹配,则返回true;否则,返回false
  */
  public static boolean validate(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否完全匹配
    boolean flag = m.matches();//该方法尝试将整个输入序列与该模式匹配
    return flag;
  }

  /**
  * 验证传入的字符串是否有子字符串匹配正则表达式
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 若匹配,则返回true;否则,返回false
  */
  public static boolean validate2(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否完全匹配
    boolean flag = m.find();//该方法扫描输入序列以查找与该模式匹配的下一个子序列
    return flag;
  }


  /**
  * 给定的字符串中是否有符合给定正则表达式的子字符串,返回匹配的第一个子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 返回匹配的第一个子字符串,否不匹配.返回null
  */
  public static String search(String regex,String decStr){
    //表达式对象 Pattern.CASE_INSENSITIVE表示 启用不区分大小写的匹配
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    //创建Matcher对象
    Matcher m = p.matcher(decStr);
    //是否找到匹配
    boolean flag = m.find();//该方法扫描输入序列以查找与该模式匹配的下一个子序列
    String findString = "";
    if(flag){
      findString =m.group();
      String findString0 = m.group(0);//group(),group(0)返回符合整个表达式的子字符串
      String findString1 = m.group(1);//group(1)返回符合整个表达式的子字符串中匹配第一个表达式的子字符串
      System.out.println(findString1);

    }
    return findString;
  }

  /**
  * 返回给定字符串中匹配给定正则表达式的所有子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @return 返回所有匹配给定正则表达式的所有子字符串
  */
  public static List searchSubStr(String regex,String decStr){
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(decStr);
    List<String> list = new ArrayList<String>();
    while(m.find()){
      list.add(m.group());
    }
    for(String str:list){
      System.out.println(str);
    }
    return list;
  }

  /**
  * 替换给定字符串中匹配正则表达式的子字符串
  * @param regex 正则表达式
  * @param decStr 要匹配的字符串
  * @param replaceStr 将符合正则表达式的子字符串替换为该字符串
  * @return 返回替换以后新的字符串
  */
  public static String replace(String regex,String decStr,String replaceStr){
    Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(decStr);
    //替换
    String newString = m.replaceAll(replaceStr);
    System.out.println(newString);
    return newString;
  }

  public static void testSplit(){
    String str ="abc5Adefghi7Ajklmn";
    //分割
    String[] strs = str.split("(\\d)A");
    for(int i=0;i<strs.length;i++){
      System.out.println(strs[i]);
    }
  }
  public static void main(String[] args) {
    //replace("\\d", "dsfd;sa;ksd12a34b567c890d88e999f", "*");
    //System.out.println(validate("\\d+","3344455aa"));
    //System.out.println(validate2("\\d+","3344455aa"));
    //System.out.println(searchSubStr("(\\d+)([a-z]+)", "334455aa-2211aa--2255bb"));
    testSplit();
  }
}

正则表达式在java程序中的使用