首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Java正则表达式(2)

2012-07-04 
Java正则表达式(二)Matcher类:引用\w(\d\d)(\w+)这个正则表达式有三个组:Java代码package?edu.jlu.fuliang

Java正则表达式(二)

Matcher类:引用\w(\d\d)(\w+)


这个正则表达式有三个组:Java代码

  1. package?edu.jlu.fuliang;??
  2. ??
  3. import?java.util.regex.Matcher;??
  4. import?java.util.regex.Pattern;??
  5. ??
  6. ??
  7. public?class?RegexTest?{??
  8. ????public?static?void?main(String[]?args)?{??
  9. ????????String?regex?=?"\\w(\\d\\d)(\\w+)";??
  10. ????????String?candidate?=?"x99SuperJava";??
  11. ??????????
  12. ????????Pattern?p?=?Pattern.compile(regex);??
  13. ????????Matcher?matcher?=?p.matcher(candidate);??
  14. ????????if(matcher.find()){??
  15. ????????????int?gc?=?matcher.groupCount();??
  16. ????????????for(int?i?=?0;?i?<=?gc;?i++)??
  17. ????????????????System.out.println("group?"?+?i?+?"?:"?+?matcher.group(i));??
  18. ????????}??
  19. ????}??
  20. }??


输出结果:引用group 0Java正则表达式(2)99SuperJavaJava代码

  1. import?java.util.regex.*;??
  2. ??
  3. public?class?MatcherPatternExample{??
  4. ??public?static?void?main(String?args[]){??
  5. ??????test();??
  6. ??}??
  7. ??
  8. ??public?static?void?test(){??
  9. ?????Pattern?p?=?Pattern.compile("\\d");??
  10. ?????Matcher?m1?=?p.matcher("55");??
  11. ?????Matcher?m2?=?p.matcher("fdshfdgdfh");??
  12. ??
  13. ?????System.out.println(m1.pattern()?==?m2.pattern());??
  14. ?????//return?true??
  15. ??}??
  16. }??


public Matcher reset()Java代码

  1. public?class?MatcherStartExample{??
  2. ??public?static?void?main(String?args[]){??
  3. ??????test();??
  4. ??}??
  5. ??public?static?void?test(){??
  6. ?????//create?a?Matcher?and?use?the?Matcher.start()?method??
  7. ?????String?candidateString?=?"My?name?is?Bond.?James?Bond.";??
  8. ?????String?matchHelper[]?=??
  9. ??????{"??????????^","??????????????????????^"};??
  10. ?????Pattern?p?=?Pattern.compile("Bond");??
  11. ?????Matcher?matcher?=?p.matcher(candidateString);??
  12. ??
  13. ?????//Find?the?starting?point?of?the?first?'Bond'??
  14. ??????matcher.find();??
  15. ??????int?startIndex?=?matcher.start();??
  16. ??????System.out.println(candidateString);??
  17. ??????System.out.println(matchHelper[0]?+?startIndex);??
  18. ??
  19. ?????//Find?the?starting?point?of?the?second?'Bond'??
  20. ??????matcher.find();??
  21. ??????int?nextIndex?=?matcher.start();??
  22. ??????System.out.println(candidateString);??
  23. ??????System.out.println(matchHelper[1]?+?nextIndex);??
  24. }??


输出结果:Java代码

  1. import?java.util.regex.*;??
  2. ??
  3. public?class?MatcherGroupExample{??
  4. ??public?static?void?main(String?args[]){??
  5. ??????test();??
  6. ??}??
  7. ??public?static?void?test(){??
  8. ??????//create?a?Pattern??
  9. ??????Pattern?p?=?Pattern.compile("Bond");??
  10. ??
  11. ??????//create?a?Matcher?and?use?the?Matcher.group()?method??
  12. ??????String?candidateString?=?"My?name?is?Bond.?James?Bond.";??
  13. ??????Matcher?matcher?=?p.matcher(candidateString);??
  14. ??????//extract?the?group??
  15. ??????matcher.find();??
  16. ??????System.out.println(matcher.group());??
  17. ??}??
  18. }??


public String group(int group)Java代码

  1. import?java.util.regex.*;??
  2. ??
  3. public?class?MatcherGroupParamExample{??
  4. ??public?static?void?main(String?args[]){??
  5. ??????test();??
  6. ??}??
  7. ??public?static?void?test(){??
  8. ?????//create?a?Pattern??
  9. ??????Pattern?p?=?Pattern.compile("B(ond)");??
  10. ??
  11. ?????//create?a?Matcher?and?use?the?Matcher.group(int)?method??
  12. ?????String?candidateString?=?"My?name?is?Bond.?James?Bond.";??
  13. ?????//create?a?helpful?index?for?the?sake?of?output??
  14. ?????Matcher?matcher?=?p.matcher(candidateString);??
  15. ?????//Find?group?number?0?of?the?first?find??
  16. ??????matcher.find();??
  17. ??????String?group_0?=?matcher.group(0);??
  18. ??????String?group_1?=?matcher.group(1);??
  19. ??????System.out.println("Group?0?"?+?group_0);??
  20. ??????System.out.println("Group?1?"?+?group_1);??
  21. ??????System.out.println(candidateString);??
  22. ??
  23. ?????//Find?group?number?1?of?the?second?find??
  24. ??????matcher.find();??
  25. ??????group_0?=?matcher.group(0);??
  26. ??????group_1?=?matcher.group(1);??
  27. ??????System.out.println("Group?0?"?+?group_0);??
  28. ??????System.out.println("Group?1?"?+?group_1);??
  29. ??????System.out.println(candidateString);??
  30. ??}??
  31. }??



public int groupCount()Java代码

  1. while(matcher.find()){??
  2. ???//在匹配的区域,使用group,replace等进行查看和替换操作??
  3. }??


public boolean find(int start)Java代码

  1. StringBuffer?sb?=?new?StringBuffer();??
  2. String?replacement?=?"Smith";??
  3. Pattern?pattern?=?Pattern.compile("Bond");??
  4. Matcher?matcher?=pattern.matcher("My?name?is?Bond.?James?Bond.?I?would?like?a?martini.");??
  5. while(matcher.find()){??
  6. ??matcher.appendReplacement(sb,replacement);//结果是My?name?is?Smith.?James?Smith??
  7. }??


Matcher对象会维护追加的位置,所以我们才能不断地使用appendReplacement来替换所有的匹配。Java代码

  1. while(matcher.find()){??
  2. ??matcher.appendReplacement(sb,replacement);//结果是My?name?is?Smith.?James?Smith??
  3. }??
  4. matcher.appendTail(sb);??


的更便捷的方法。Java代码

  1. public?String?replaceFirst(String?replacement)??


这个与replaceAll想对应很容易理解,就是只替换第一个匹配的。

?

转载自:http://fuliang.iteye.com/blog/175035

?

热点排行