Pattern类和Matcher类
概述:
Pattern类属于java.util.regex包中的一个类。
java.util.regex.Pattern;
public final class Pattern
extends Object
implements Serializable
Matcher类也是属于java.util.regex包中的一个类。
java.util.regex.Matcher;
public final class Matcher
extneds Object
implements MatchResult
Pattern和Matcher配合使用:
模式和匹配器的典型调用顺序:
Pattern p=Pattern.compile(“a*b”);
Matcher m=p.matcher(“aaaaaaab”);
boolean b=m.matches();
下面看一段代码来具体解释模式和匹配器的典型调用顺序:
package 正则表达式;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo8_Pattern {
public static void main(String[] args) {
// Pattern和Matcher的结合使用
//模式和匹配器典型的调用顺序
Pattern p=Pattern.compile("a*b"); //获取到正则表达式
Matcher m=p.matcher("aaaaaab"); //获取匹配器
boolean b=m.matches(); //看是否能匹配,匹配就返回true
System.out.println(b); //true
System.out.println("aaaaaab".matches("a*b")); //完成了上述功能,与上面结果一样true
}
}
正则表达式的获取功能
Matcher类中的boolean find()方法:尝试查找与该模式匹配的输入序列的下一个子序列。String group():返回由以前匹配操作所匹配的输入子序列。
下面看一段代码示例:
package 正则表达式;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo8_Pattern {
public static void main(String[] args) {
// Pattern和Matcher的结合使用
//需求:把一个字符串中的手机号码获取出来
String s="我的手机号码是18988888888,我以前的手机号是19923333333,我还有一个手机号是18899898988";
String regex="1[35789]\\d{9}";
Pattern p=Pattern.compile(regex); //获取到正则表达式
Matcher m=p.matcher(s); //获取匹配器
//获取一个手机号码
boolean b1=m.find();
System.out.println(b1); //true
String s1=m.group(); //要获取查找到的字符串,必须先获取即使用find()方法,否则,报错
System.out.println(s1); //18988888888
/*
获取字符串中所有的手机号码
18988888888
19923333333
18899898988
*/
while(m.find()) {
System.out.println(m.group());
}
}
10万+

被折叠的 条评论
为什么被折叠?



