本来代码实践来源于自己,参考页面是:http://blog.csdn.net/allwefantasy/article/details/3136570

需要的包、类:

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

以下列举了常见的regex的用法及用处,都非常有用!

 

  1. public class RegexTest { 
  2.     public static void main(String[] args) { 
  3.  
  4.         Pattern pattern = Pattern.compile("(\\d{3})(\\d{1})");    //一旦编译,任何地方皆可使用 
  5.         Matcher matcher = pattern.matcher("111222"); 
  6.         while (matcher.find()) { 
  7.             //若group参数为空,则返回整个匹配串, 
  8.             // 否则,从1开始,按括号位置从左到右,作为参数,取出相应括号的内容 
  9.             System.out.println(matcher.group(2)); 
  10.         } 
  11.  
  12.         System.out.println("-------------------------"); 
  13. //字符串是否满足表达式
  14.         System.out.println(Pattern.compile("\\d(.|\n)*").matcher("2\n").matches()); 
  15.  
  16.         System.out.println("-------------------------"); 
  17.  
  18.         String input ="This!!unusual use!!of exclamation!!points"
  19.         System.out.println(Arrays.asList( 
  20.                 Pattern.compile("!!").split(input)));
  21. //其实这样做是麻烦的,直接使用 "我是一个测试的字符串".split("!!")就能得到结果
  22.         System.out.println("-------------------------"); 
  23.  
  24.         Matcher m2 = Pattern.compile("[frb][aiu][gx]") 
  25.                 .matcher("fix the rug with bags"); 
  26.         while (m2.find()) 
  27.             System.out.println(m2.group()); 
  28.         m2.reset("fix the rig with rags"); //重置匹配字符串 
  29.         while (m2.find()) 
  30.             System.out.println(m2.group()); 
  31.         System.out.println("m2-------------------------"); 
  32.     } 
  33.  
  34. /**
    * 替换字符串中的一些有固定规律的字符串,并根据其内容重新组合字符串
    * 如:
    * "one cat two cat12 in the yard";
    * 换成:
    * one cbt two cbt22 in the yard
    * @param charSeq
    * @return
    */
  35. public static StringBuffer changeReplaceString(String charSeq) {
    // String charSeq = "one cat two cat12 in the yard";
    Pattern p = Pattern.compile("cat\\d*");
    Matcher m = p.matcher(charSeq);
    StringBuffer sb = new StringBuffer();

    //字符串的替换
    while (m.find()) {
    //获取匹配到的字符串
    String myFind = m.group();
    /* 将字符串进行一定的替换,我们为什么没有使用
    m.replaceAll("dog") 呢?
    因为它不能把获取到的字符串进行一个有规则的2次替换
    比如我想把 cat12,换成cat22,而cat保持不变
    由于java对拉姆达和闭包函数支持性的问题,想做到这一点,会有很多代码生成*/

  36. m.appendReplacement(sb, myFind.replace("a", "b").replace("1", "2"));

    }
    m.appendTail(sb);
    System.out.println(sb.toString());
    // 结果: one cbt two cbt22 in the yard
    return sb;
  37. }
    /**
    * 正则表达式快速替换
    */
    public static void quickReplace() {
    String str = "正则表达式 Hello World,正则表达式 Hello World";
    Pattern pattern = Pattern.compile("正则表达式");
    Matcher matcher = pattern.matcher(str);
    //替换第一个符合正则的数据
    System.out.println(matcher.replaceAll("Java"));
    System.out.println(matcher.replaceFirst("Java"));
    System.out.println("--------");
    //replaceAll的第一个参数可以传正则表达式,其实下面的代码更简便
    System.out.println(str.replaceAll("正则表达式","Java"));
    System.out.println(str.replaceFirst("正则表达式","Java"));
    }