package com.zixue;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]){
/*String regex = "m(a|f|af)n";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("mavnmafnff");
System.out.println(match.find());
System.out.println(match.replaceAll("b").toString());*/
get7();
}
//句点符号 --->这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符
public static void get1(){
String regex="m.n";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("man-mafn-ff");
System.out.println("句点符找到匹配:"+match.find());
System.out.println("把找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//方括号之内只能匹配单个字符
public static void get2(){
String regex="m[afd]n";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("man-mafn-ff");
System.out.println("方括号找到匹配:"+match.find());
System.out.println("方括号把找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//圆括号还可以用来分组,或符合的使用‘|’
public static void get3(){
String regex="m(a|af)n";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("man-mafn-ff");
System.out.println("使用圆括号找到匹配:"+match.find());
System.out.println("使用圆括号找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//表示匹配次数的符号--这些符号用来确定紧靠该符号左边的符号出现的次数
//‘*’号表示0或者多次---‘+’号表示1次或者多次---‘?’号表示0次或者1次----‘{n}’恰好n次----‘{n,m}’从n到m次
//连字符(“-”)有着特殊的意义,它的前面要加上一个转义字符“\”。
//匹配次数的使用,匹配如下格式的字符串‘999-99-9999’
public static void get4(){
String regex="[0-9]{3}\\-[0-9]{2}\\-[0-9]{4}";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("a939-94-9399f");
System.out.println("找到匹配:"+match.find());
System.out.println("找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//希望连字符号可以出现,也可以不出现,‘999-99-9999’和‘999999999’都属于正确的格式
public static void get5(){
String regex="[0-9]{3}\\-?[0-9]{2}\\-?[0-9]{4}";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("a939949399f");
System.out.println("找到匹配:"+match.find());
System.out.println("找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符
//[^a][a-z]+ 第一个字符不能是‘a',后续字符可以是'a'到’z'之间的任意字符
public static void get6(){
String regex="[^a][a-z]+";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("afsffsaxa");
System.out.println("找到匹配:"+match.find());
System.out.println("找到匹配的给去掉:"+match.replaceAll("b").toString());
}
//从格式为“June 26, 1951”的生日日期中提取出月份
public static void get7(){
String regex="af";
Pattern pt = Pattern.compile(regex);
Matcher match = pt.matcher("afafafafa");
StringBuffer buffer = new StringBuffer();
//找到匹配的并把匹配的输出
while(match.find()){
buffer.append(match.group()+"\n");
}
System.out.println(buffer.toString());
}
//等价符合
// \d==[0-9] \D ==[^0-9] \w==[A-Z0-9] \W==[^A-Z0-9] \s[\t\n\r\f] \S ==[^\t\n\r\f]
}