当前位置:   article > 正文

[Android基础]Pattern与Matcher_android matcher

android matcher

原文链接:http://blog.csdn.net/cclovett/article/details/12448843


  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class Test
  4. {
  5. public static void main(String[] args)
  6. {
  7. //pattern()返回正则表达式的字符串形式
  8. //输出:\w+
  9. Pattern p1 = Pattern.compile("\\w+");
  10. System.out.println(p1.pattern());
  11. //split(CharSequence input)分隔字符串
  12. //输出:s[0]=qq是 s[1]=电话是
  13. Pattern p2 = Pattern.compile("\\d+");
  14. String[] s = p2.split("qq是123电话是456");
  15. for (int i = 0; i < s.length; i++) {
  16. System.out.println(s[i]);
  17. }
  18. //matcher(String regex,CharSequence input)只匹配一次,且匹配全部字符串
  19. System.out.println(Pattern.matches("\\d+", "123"));//true
  20. System.out.println(Pattern.matches("\\d+", "123啊"));//false
  21. //matcher.pattern()返回该Matcher对象是由哪个Pattern对象的创建的
  22. //输出:\d+
  23. Pattern p3 = Pattern.compile("\\d+");
  24. Matcher m3 = p3.matcher("123");
  25. System.out.println(m3.pattern().pattern());
  26. /Matcher的三种匹配方式
  27. //Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()
  28. //matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true
  29. Pattern p4 = Pattern.compile("\\d+");
  30. Matcher m4 = p4.matcher("123abc");
  31. System.out.println(m4.matches());//false
  32. Matcher m42 = p4.matcher("123");
  33. System.out.println(m42.matches());//true
  34. //lookingAt()对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true
  35. Pattern p5 = Pattern.compile("\\d+");
  36. Matcher m5 = p5.matcher("123abc");
  37. System.out.println(m5.lookingAt());//true
  38. Matcher m52 = p5.matcher("abc123");
  39. System.out.println(m52.lookingAt());//false
  40. //find()对字符串进行匹配,匹配到的字符串可以在任何位置
  41. Pattern p6 = Pattern.compile("\\d+");
  42. Matcher m6 = p6.matcher("11aa");
  43. System.out.println(m6.find());//true
  44. Matcher m62 = p6.matcher("aa11");
  45. System.out.println(m62.find());//true
  46. Matcher m63 = p6.matcher("aa");
  47. System.out.println(m63.find());//false
  48. //当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
  49. //start()返回匹配到的子字符串在字符串中的索引位置.
  50. //end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
  51. //group()返回匹配到的子字符串
  52. Pattern p7 = Pattern.compile("\\d+");
  53. Matcher m7 = p7.matcher("aaa123bbb");
  54. System.out.println(m7.find());//true
  55. System.out.println(m7.start());//3
  56. System.out.println(m7.end());//6 (是123的后一位)
  57. System.out.println(m7.group());//123
  58. //start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作
  59. //Mathcer类还有一个groupCount()用于返回有多少组
  60. Pattern p8 = Pattern.compile("([a-z]+)(\\d+)");
  61. Matcher m8 = p8.matcher("aaa123bbb");
  62. System.out.println(m8.find());//true
  63. System.out.println(m8.groupCount());//2
  64. System.out.println(m8.group(1));//aaa
  65. System.out.println(m8.group(2));//123
  66. System.out.println(m8.start(1));//0
  67. System.out.println(m8.end(1));//3
  68. System.out.println(m8.start(2));//3
  69. System.out.println(m8.end(2));//6
  70. Pattern p9 = Pattern.compile("\\d+");
  71. Matcher m9 = p9.matcher("我的QQ是:12 我的电话是:34 我的邮箱是:aaa56@aaa.com");
  72. while(m9.find()) {
  73. //每次执行匹配操作后start(),end(),group()三个方法的值都会改变,改变成匹配到的子字符串的信息,
  74. //以及它们的重载方法,也会改变成相应的信息
  75. //只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,
  76. //也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用
  77. //12 34 56
  78. System.out.println(m9.group());
  79. System.out.println(m9.start());
  80. System.out.println(m9.end());
  81. }
  82. }
  83. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/286299
推荐阅读
相关标签
  

闽ICP备14008679号