原文來自~~http://blog.csdn.net/laizhenhai88/article/details/7293418
主要是搞清楚matches()/lookingAt ()/find()這三個方法的區別,以及會使用replaceAll() replaceFirst() appendReplacement() appendTail() ,請看代碼
- package test;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class RegTest {
- public static void main(String[] args)
- {
- Pattern reg = Pattern.compile("(20\\d{2})-([01]\\d)-([0-3]\\d)");
- Matcher matcher = null;
- System.out.println(reg.pattern());
- matcher = reg.matcher("2012-02-25");
- //matches()方法嘗試對整個目標字符展開匹配檢測,是隻有整個目標字符串完全匹配時才返回真值
- if (matcher.matches())
- {
- System.out.println("time:"+matcher.group(0));
- System.out.println("year:"+matcher.group(1));
- System.out.println("year:"+matcher.group(2));
- System.out.println("year:"+matcher.group(3));
- }
- Pattern reg2 = Pattern.compile("\\d*");
- System.out.println(reg2.pattern());
- matcher = reg2.matcher("2012abcd");
- //lookingAt()方法將檢測目標字符串是否以匹配的子串起始
- if (matcher.lookingAt())
- {
- System.out.println("num:"+matcher.group());
- }
- Pattern reg3 = Pattern.compile("\\d+");
- System.out.println(reg3.pattern());
- matcher = reg3.matcher("asf2012abcd2011jdf2010jk");
- //find()方法嘗試在目標字符串裏查找下一個匹配子串
- while(matcher.find())
- {
- System.out.println("matcherStr:"+matcher.group());
- }
- //appendReplacement() 將當前匹配子串替換爲指定字符串,並且將替換後的子串以及其之前到上次匹配子串之後的字符串段添加到一個StringBuffer對象裏
- Pattern reg4 = Pattern.compile("(hello|goodbye)");
- matcher = reg4.matcher("sayhelloandsaygoodbyeandsayhelloandsaysomething");
- StringBuffer sb = new StringBuffer();
- while (matcher.find()){
- System.out.println("matcherStr:"+matcher.group());
- matcher.appendReplacement(sb, "IT");
- System.out.println("sb:"+sb);
- }
- //appendTail() 方法則將最後一次匹配工作後剩餘的字符串添加到一個StringBuffer對象裏
- //可以在一次或多次調用 appendReplacement 方法後調用它來複制剩餘的輸入序列
- matcher.appendTail(sb);
- System.out.println("sb:"+sb);
- }
- }
輸出結果如下:
- (20\d{2})-([01]\d)-([0-3]\d)
- time:2012-02-25
- year:2012
- year:02
- year:25
- \d*
- num:2012
- \d+
- matcherStr:2012
- matcherStr:2011
- matcherStr:2010
- matcherStr:hello
- sb:sayIT
- matcherStr:goodbye
- sb:sayITandsayIT
- matcherStr:hello
- sb:sayITandsayITandsayIT
- sb:sayITandsayITandsayITandsaysomething