Pattern和Matcher的结合使用

来源:互联网 发布:平板下载不了软件 编辑:程序博客网 时间:2024/06/02 05:49


Pattern和Matcher

java.lang.Object————java.util.regex.Patternpublic final class Patterne xtends Object implements Serializable


正则表达式的编译表示形式。 


因此,典型的调用顺序是  Pattern p = Pattern.compile("a*b"); //获取到正则表达式 指定为字符串的正则表达式必须首先被编译为Pattern类的实例。 Matcher m = p.matcher("aaaaab");//获取匹配器 然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。 boolean b = m.matches();//看是否能匹配,匹配就返回true 执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 System.out.println("aaaaab".matches("a*b")); //与上面的结果一样


 在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。 语句  boolean b = Pattern.matches("a*b", "aaaaab"); 等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。 此类的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。  语句  boolean b = Pattern.matches("a*b", "aaaaab"); 等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。 此类的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。 


public static Pattern compile(String regex)将给定的正则表达式编译到模式中。


public static boolean matches(String regex,CharSequence input)编译给定正则表达式并尝试将给定输入与其匹配。 调用此便捷方法的形式 Pattern.matches(regex, input);与表达式 Pattern.compile(regex).matcher(input).matches() 的行为完全相同。 如果要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高。参数:regex - 要编译的表达式input - 要匹配的字符序列 

Pattern和Matcher的结合使用

把一个字符串中的手机号码获取出来

public class b {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString s = "我的手机是13468847456,他的手机号15289236924";String regex = "1[3578]\\d{9}";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(s);boolean b = m.matches();System.out.println(b);//false/*public boolean find() * 尝试查找与该模式匹配的输入序列的下一个子序列。 此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第一个字符开始。 如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。 返回:当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。*///boolean b1 = m.find();//System.out.println(b1);//true/*public String group() * 返回由以前匹配操作所匹配的输入子序列。 对于具有输入序列 s 的匹配器 m,表达式 m.group() 和 s.substring(m.start(), m.end()) 是等效的。 注意,某些模式(例如,a*)匹配空字符串。当模式成功匹配输入中的空字符串时,此方法将返回空字符串。 返回:以前匹配操作所匹配的字符串形式的子序列(可能为空)。 *///System.out.println(m.group());//13468847456/*while(m.find())System.out.println(m.group());*//*1346884745615289236924*/}}



0 0
原创粉丝点击