结果示意图
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);
}
}
gdfgds