结果示意图
A:Pattern和Matcher的概述
* 指定为字符串的正则表达式 * 必须首先被编译为此类的实例。 * 然后,可将得到的模式用于创建 Matcher 对象, * 依照正则表达式,该对象可以与任意字符序列匹配。 * 执行匹配所涉及的所有状态都驻留在匹配器中, * 所以多个匹配器可以共享同一模式。 B:模式和匹配器的典型调用顺序
* 通过JDK提供的API,查看Pattern类的说明 * 典型的调用顺序是 * Pattern p = Pattern.compile(“a*b”); * Matcher m = p.matcher(“aaaaab”); * boolean b = m.matches();
package com.ifenx8.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo_Pattern { /** * * A:Pattern和Matcher的概述 * 指定为字符串的正则表达式 * 必须首先被编译为此类的实例。 * 然后,可将得到的模式用于创建 Matcher 对象, * 依照正则表达式,该对象可以与任意字符序列匹配。 * 执行匹配所涉及的所有状态都驻留在匹配器中, * 所以多个匹配器可以共享同一模式。 * B:模式和匹配器的典型调用顺序 * 通过JDK提供的API,查看Pattern类的说明 * 典型的调用顺序是 * Pattern p = Pattern.compile(“a*b”); * Matcher m = p.matcher(“aaaaab”); * boolean b = m.matches(); */ public static void main(String[] args) { demo1(); /** A:正则表达式的获取功能 * Pattern和Matcher的结合使用 * B:案例演示 * 需求:把一个字符串中的手机号码获取出来 * */ String s = “我的手机号是18000000000,另外一个手机号是13100000000,还有一个手机号码是15500000000,我的手机号码多吧!”; String regex = “1[3578]\d{9}”;//手机号码的正则表达式 Pattern p = Pattern.compile(regex);//获取正则表达式 Matcher m = p.matcher(s);//匹配正则表达式 /* //重复调用不利于代码优化,借助循环更方便 boolean b = m.find();//尝试查找与该模式下匹配的输入序列的下一个子序列 System.out.println(m.group());//输出匹配的子字符序列, boolean b1 = m.find();//每次匹配成功 就匹配下一个字符,直到匹配完 System.out.println(m.group());//输出匹配的子字符序列, boolean b2 = m.find();//尝试查找与该模式下匹配的输入序列的下一个子序列 System.out.println(m.group());//输出匹配的子字符序列, */ //利用while循环解决 while(m.find()){ System.out.println(m.group()); } } public static void demo1() { //典型的调用顺序 Pattern p = Pattern.compile(“a*b”);//获取正则表达式 Matcher m = p.matcher(“aaaaab”);//创建指定输入与此模式的匹配器 boolean b = m.matches();//指定的输入与正在表达式是否匹配 System.out.println(b); } }