正则表达式是一串字符,表示了一种文本模式,在java中主要有如下语法:
#1 单个字符
#2 字符组
#3 分组
#4 特殊边界匹配
#5 环视边界匹配
#6 转义匹配模式等
测试:
public static void main(String[] args) {
//特殊字符
Pattern pattern1 = Pattern.compile("t");
Matcher matcher1 = pattern1.matcher(" ");
System.out.println("=result1=" + matcher1.find());
//8进制字符
Pattern pattern2 = Pattern.compile("0141");
Matcher matcher2 = pattern2.matcher("a");
System.out.println("=result2=" + matcher2.find());
//16进制字符
Pattern pattern3 = Pattern.compile("0x6A");
Matcher matcher3 = pattern3.matcher("j");
System.out.println("=result3=" + matcher3.find());
//unicode字符
Pattern pattern4 = Pattern.compile("0u9A6C");
Matcher matcher4 = pattern4.matcher("马");
System.out.println("=result4=" + matcher4.find());
//单个字符
Pattern pattern = Pattern.compile("a.f");
Matcher abbf = pattern.matcher("atf");
System.out.println("=result=" + abbf.find());
//字符组1
Pattern pattern5 = Pattern.compile("[ abcd ]");
Matcher matcher5 = pattern5.matcher("a");
System.out.println("=result5=" + matcher5.find());
//字符组2
Pattern pattern6 = Pattern.compile("[ 1-9 ]");
Matcher matcher6 = pattern6.matcher("1");
System.out.println("=result6=" + matcher6.find());
//字符组3
Pattern pattern7 = Pattern.compile("[ ^abcd ]");
Matcher matcher7 = pattern7.matcher("abcd");
System.out.println("=result7=" + matcher7.find());
//贪婪
Pattern pattern8 = Pattern.compile(".*");
Matcher matcher8 = pattern8.matcher("firstsecond");
System.out.println("=result8=" + matcher8.find());
//非贪婪
Pattern patter9 = Pattern.compile(".*?");
Matcher matcher9 = patter9.matcher("first");
System.out.println("=result9=" + matcher9.find());
//分组 捕捉后可以继续用
Pattern patter10 = Pattern.compile("a(bc)((de)(fg))");
Matcher matcher10 = patter10.matcher("abcdefg");
System.out.println("=result10=" + matcher10.find());
//回溯
Pattern patter11 = Pattern.compile("<(\w+)>(.*)\1>");
Matcher matcher11 = patter11.matcher("bc ");
System.out.println("=result11=" + matcher11.find());
//非捕分组
Pattern patter12 = Pattern.compile("(?:abc|def)");
Matcher matcher12 = patter12.matcher("abc");
System.out.println("=result12=" + matcher12.find());
//边界匹配开头
Pattern patter13 = Pattern.compile("^abc");
Matcher matcher13 = patter13.matcher("abc");
System.out.println("=result13=" + matcher13.find());
//边界匹配结尾
Pattern patter14 = Pattern.compile("abc$");
Matcher matcher14 = patter14.matcher("sssssssabc");
System.out.println("=result14=" + matcher14.find());
//多行匹配
Pattern patter15 = Pattern.compile("abc$",Pattern.MULTILINE);
Matcher matcher15 = patter15.matcher("sssssssabc");
System.out.println("=result15=" + matcher15.find());
//肯定顺序环视
Pattern patter16 = Pattern.compile("abc(?=def)");
Matcher matcher16 = patter16.matcher("abcdef");
System.out.println("=result16=" + matcher16.find());
//否定顺序环视
Pattern patter17 = Pattern.compile("abc(?!def)");
Matcher matcher17 = patter17.matcher("abcdef");
System.out.println("=result17=" + matcher17.find());
//肯定逆序环视
Pattern patter18 = Pattern.compile("abc(?<=def)");
Matcher matcher18 = patter18.matcher("abcdef");
System.out.println("=result18=" + matcher18.find());
//否定逆序环视
Pattern patter19 = Pattern.compile("abc(?<!def)");
Matcher matcher19 = patter19.matcher("abcdef");
System.out.println("=result19=" + matcher19.find());
//转义
Pattern patter20 = Pattern.compile("\\");
Matcher matcher20 = patter20.matcher("\");
System.out.println("=result20=" + matcher20.find());
//java中 的正则 相关的都是\
Pattern pattern1 = Pattern.compile("<(\w+)>(.*)\1>");
Matcher matcher1 = pattern1.matcher("bc");
System.out.println("=result1=" + matcher1.find());
//java中 单行模式
Pattern pattern2 = Pattern.compile("<(\w+)>(.*)\1>",Pattern.DOTALL);
Matcher matcher2 = pattern2.matcher("bc");
System.out.println("=result2=" + matcher2.find());
//java中 多行模式
Pattern pattern3 = Pattern.compile("<(\w+)>(.*)\1>",Pattern.MULTILINE);
Matcher matcher3 = pattern3.matcher("bc");
System.out.println("=result3=" + matcher3.find());
//java中 忽略大小写模式
Pattern pattern4 = Pattern.compile("the",Pattern.CASE_INSENSITIVE);
Matcher matcher4 = pattern4.matcher("THE");
System.out.println("=result4=" + matcher4.find());
//java中 原样输出模式 Q E
Pattern pattern5 = Pattern.compile("\t\n",Pattern.LITERAL);
Matcher matcher5 = pattern5.matcher("\t\n");
System.out.println("=result5=" + matcher5.find());
String str = "abc def hello.n world";
String[] split = str.split("(\s|\.)+");
for (int i = 0; i < split.length; i++) {
System.out.println("====>"+split[i]);
}
String str2 = ",abc,def,";
String[] split2 = str2.split(",");
for (int i = 0; i < split2.length; i++) {
System.out.println("===="+split2[i]);
}
//pattern split
Pattern pattern6 = Pattern.compile("\d{4}");
String[] split1 = pattern6.split("\d");
for (int i = 0; i < split1.length; i++) {
System.out.println("--->"+split1[i]);
}
Matcher matcher6 = pattern6.matcher("2222");
System.out.println("=result6=" + matcher6.find());
String regex = "\d{4}-\d{2}-\d{2}";
Pattern pattern = Pattern.compile(regex);
String strs = "today is 2017-06-02,yesterday is 2017-06-01";
Matcher matcher = pattern.matcher(strs);
while(matcher.find()){
System.out.println("find "+matcher.group()+" position:"+matcher.start()+"-"+matcher.end() +"===>"+matcher.group(0) +"&&"+matcher.groupCount() +"--->"+matcher.appendReplacement(new StringBuffer("2018"),"2017")) ;
}
System.out.println(strs);
}



