1 package regex; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class regexDemo { 7 public static void main(String[] args) { 8 String str1 = "19900330199012121990111119900220"; 9 String str = "((\d{4})(\d{2})(\d{2}))"; 10 Pattern p = Pattern.compile(str); 11 Matcher m = p.matcher(str1); 12 13 while (m.find()) { 14 // group分组左括号优先匹配。 15 System.out.print("出生日期" + m.group(1)); 16 System.out.print("...."); 17 System.out.print("出生年" + m.group(2) + " "); 18 System.out.print("出生月" + m.group(3) + " "); 19 System.out.print("出生日" + m.group(4) + " "); 20 // 返回以前匹配的初始索引。 21 System.out.print("start:" + m.start() + " "); 22 // 返回匹配后的位置。 23 System.out.println("end:" + m.end()); 24 } 25 26 String str2 = "<table><td>鱼鱼枫</td><td>这个选手</td><td>野路子</td></table>"; 27 //贪婪模式,指的是.*会匹配所有的信息,此处会找整个信息。 28 p = Pattern.compile("<td>(.*)</td>"); 29 m = p.matcher(str2); 30 while(m.find()){ 31 System.out.println(m.group(1)); 32 } 33 //找到的结果:鱼鱼枫</td><td>这个选手</td><td>路子野 34 35 //非贪婪模式,仅仅只是匹配第一个结果,*?表示使用非贪婪模式 36 p = Pattern.compile("<td>(.*?)</td>"); 37 m = p.matcher(str2); 38 while(m.find()){ 39 System.out.print(m.group(1)); 40 System.out.print("start:" + m.start() + " "); 41 // 返回匹配后的位置。 42 System.out.println("end:" + m.end()); 43 } 44 //找到的结果:鱼鱼枫</td><td>这个选手</td><td>路子野 45 } 46 }