Java高级Day57-剩余内容补充
142.非贪婪匹配
public class TestJava {public static void main(String[] args) {String content = "hello11111 ok";//String regStr = "\\d+";//默认是贪婪匹配String regStr = "\\d+?";//非贪婪匹配 Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content); while (matcher.find()) {System.out.println("找到 " + matcher.group(0));}} }
143.pattern类
pattern对象是一个正则表示对象,Pattern类没有公共构造方法。要创建一个pattern对象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数
public class TestJava {//演示matches方法,用于整体匹配机制,验证输入的字符串是否满足条件public static void main(String[] args) {String content = "hello abc hello";String regStr = "hello"; boolean matches = Pattern.matches(regStr,content); System.out.println("整体匹配=" + matches);} }
145.Matches类
public class TestJava {public static void main(String[] args) {String content = "hello edu jack tom hello smith hello";String regStr = "hello"; Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("==========");System.out.println(matcher.start());System.out.println(matcher.end());System.out.println("找到:" + content.substring(matcher.start(),matcher.end()));}//整体匹配方法,常用于,去校验某个字符串是否满足某个规则System.out.println("整体匹配 = " + matcher.matches()); //完成 如果content 有 morning 替换成 nightregStr = "morning";pattern = Pattern.compile(regStr);matcher = pattern.matcher(content);//注意:返回的字符串才是替换后的字符串String night = matcher.replaceAll("night");} }
146.结巴去重
Q:把 : ”我...我要...学学学学...编程java!“;通过正则表达式修改成”我要学Java“
public class TestJava {public static void main(String[] args) {String content = "我...我要...学学学学...编程java!"; //1.去掉所有的.Pattern pattern = Pattern.compile("\\.");Matcher matcher = pattern.matcher(content);content = matcher.replaceAll(""); System.out.println("content=" + content); //2.去掉重复的字//思路://1.使用 (.)\\1+ 去匹配pattern = Pattern.compile("(.)\\1+");matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到=" + matcher.group(0));}//2.使用 反向引用$1 来替换匹配到的内容matcher.replaceAll("$1");System.out.println("content =" + content);//3.使用一条语句,去掉重复的字Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");System.out.println("content=" + content);} }