package net.peace.reg; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestReg { public static void main(String[] args) { // TODO Auto-generated method stub //边界处理 //以什么开头:^;如以数字开头:^\\d;注意^在[]中表示取反的意思 System.out.println("hell".matches("^h\\w+"));//以字母h开头; System.out.println("1hell".matches("^h\\w+"));// System.out.println("1hell".matches("^\\d\\w+"));//以数字开头 //以什么结尾:$;如以数字结尾:\\d$ System.out.println("1heeee".matches("^\\d\\w+e$"));//以数字开头,以字母e结尾 //替换处理 使用了将最后4位替换; System.out.println("18816799124".replaceAll("\\d{4}$", "****")); //分组介绍 组0是整个表达式,组1是从左边开始的第一个最外层括号;组2一次类推 final String str="430626199201027777,430626199309162222,430626198301021515"; //组一是\\d{6} 组2是\\d{8} Pattern p=Pattern.compile("(\\d{6})(\\d{8})(\\d{4})"); Matcher m=p.matcher(str); while(m.find()){ System.out.println("出生地:"+m.group(1)+"出生时间:"+m.group(2)); } //贪婪模式和非贪婪模式介绍:贪婪模式:按正常的就是 非贪婪模式:在表达式后面加上?或则+ //贪婪模式如下:贪婪模式往网会一直匹配下去 :输出为0:你好</td><td>我很好</td><td>你了 String ss="<table><td>你好</td><td>我很好</td><td>你了</td></table>"; p=Pattern.compile("<td>(.*)</td>"); m=p.matcher(ss); int index=0; while(m.find()){ System.out.println(index++ +":"+m.group(1)); } //非贪婪模式如下:当匹配到一个时,非贪婪模式就匹配正常一次;此去匹配了三次; //String ss="<table><td>你好</td><td>我很好</td><td>你了</td></table>"; p=Pattern.compile("<td>(.*?)</td>"); m=p.matcher(ss); index=0; while(m.find()){ System.out.println(index++ +":"+m.group(1)); } } }