获取功能
Pattern和Matcher类的使用
模式和匹配器的基本使用顺序
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:参数列表:String
1 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 found 41 // String ss = m.group(); 42 // System.out.println(ss); 43 } 44 }