1 import java.util.regex.Matcher; 2 import java.util.regex.Pattern; 3 4 public class RegexDemo { 5 public static void main(String[] args) { 6 // 模式和匹配器的典型调用顺序 7 // 把正则表达式编译成模式对象 8 Pattern p = Pattern.compile("a*b"); 9 // 通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串,字符串跟上面的正则表达式一致10 Matcher m = p.matcher("aaaaab");11 // 调用匹配器对象的功能12 boolean b = m.matches();13 System.out.println(b);14 15 //这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做16 String s = "aaaaab";17 String regex = "a*b";18 boolean bb = s.matches(regex);19 System.out.println(bb);20 21 //判断功能的再次简化22 String str = "abbbbbb";23 boolean cc = str.matches("ab*");24 System.out.println(cc);25 }26 }
需求:键盘输入内容,但只显示3位的字符
分析: A:创建键盘输入 B:定义规则,把规则编译成模式对象,再通过模式对象得到匹配对象 a:把正则表达式编译成模式对象 Pattern p = Pattern.compile("a*b"); b:通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串,字符串跟上面的正则表达式一致 Matcher m = p.matcher("aaaaab"); C:调用匹配器的find方法查找有没有满足条件的子串,public boolean find() D:返回这个对象, public boolean group()返回匹配的对象 E:输出对象 方法: a:返回值:void b:参数列表:String1 import java.util.Scanner; 2 import java.util.regex.Matcher; 3 import java.util.regex.Pattern; 4 public class PattenTest { 5 6 public static void main(String[] args) { 7 //创建键盘录入 8 Scanner sc = new Scanner(System.in); 9 System.out.println("输入内容:");10 String str = sc.nextLine();11 //调用方法12 group(str);13 14 }15 16 //定义方法17 public static void group(String str){18 //定义规则 19 //把正则表达式编译成模式对象 Pattern p = Pattern.compile("a*b");20 Pattern p = Pattern.compile("\\b\\w{3}\\b");21 22 //通过模式对象得到匹配对象 Matcher m = p.matcher("aaaaab");23 Matcher m = p.matcher(str);24 25 /* 这个只能判断第一个元素,注释掉26 //调用匹配器的find方法查找有没有满足条件的子串,public boolean find()27 boolean b = m.find();28 29 //返回查找到的对象 public boolean group()返回匹配的对象30 String result = m.group();31 System.out.println(result);32 */33 34 while(m.find()){35 System.out.println(m.group());36 }37 38 39 // 注意:一定要先find(),然后才能group();否则会出现下面这个错误40 // IllegalStateException: No match found41 // String ss = m.group();42 // System.out.println(ss);43 }44 }