import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestMatcher {
public static void main(String[] args) {
//正则表达式对字符串的常见操作:字符串的匹配、切割、替换、获取。
//字符串的匹配:matches()
/*常用写法*/
// 1. boolean b = Pattern.matches("正则表达式", "匹配内容");
String str = "13111225544";
String regexp = "\\d{11}$";
boolean b = Pattern.matches(regexp, str);
System.out.println("正则匹配结果="+b);
/*标准写法*/
// 2.Pattern p = Pattern.compile("正则表达式"); Matcher m = p.matcher("匹配内容");
// boolean b = m.matches();
Pattern p = Pattern.compile(regexp);
Matcher m = p.matcher(str);
boolean b2 = m.matches();
System.out.println("正则匹配结果="+b2);
/*语句匹配写法*/
// 3.if("aaab".matches(/^a*b$/)) {};
System.out.println("正则匹配结果="+(str.matches(regexp)));
// 字符串切割:split()
//DEMO
// String str = "需要切割的字符串";
//描述切割规则
// String regex = "正则表达式";
//切割后的字符串仍是字符串:
// String sstr1 = str.split(regex);
//切割后的字符串放在数组中:
// String[] sstr2 = str.split(regex);
String s = "哈哈##呵呵###哦哦#";
String regex = "#+";
String[] sstr1 = s.split(regex);
for(String string:sstr1){
System.out.print(string);
}
// 字符串替换:replaceAll()
//DEMO
// String str = "需要替换的字符串";
//匹配规则
// String regex = "正则表达式";
// String Str = str.replaceAll(regex, "替换内容");
String str2 = "哈喽##你好###大聪明";
//匹配规则
String regex2 = "(.)\\1+"; //拓展:叠词切割 String regex = "(.)\\1+",这里用到了组的概念。
//替换为:
String newStr = str2.replaceAll(regex2, "、");
//替换后结果:
System.out.println(newStr);
// 字符串获取:group()
//DEMO
//获取字符串“Hi ! welcome to my blog haha”中为两个字母的单词.
String s3 = "Hi ! welcome to my blog haha";
//1、匹配子串
String regex3 = "\\b[a-zA-Z]{2}\\b";
//2、获取匹配器
Pattern p3 = Pattern.compile(regex3);
Matcher m3 = p3.matcher(s3);
//3、使用匹配器的group()方法来获取:(find方法是判断是否具有匹配子串)、
System.out.println("”"+s+"“中的两个字母的单词有:");
while(m3.find()){
System.out.println(m3.group());
}
}
}