正则:分组取值

前端之家收集整理的这篇文章主要介绍了正则:分组取值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

几个原则:

分组的编号从1开始

遇到()加1

遇到断言跳过,如(?:exp)这种格式的,如果要算的话就,((?:exp))

  1. package cn.yuhui.com;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4.  
  5. public class RegexUtil {
  6.  
  7. public static void main(String[] args) {
  8. String str = "219.133.40.15 - - [20/Apr/2016:07:00:01 +0800] \"GET /RSS2.xml HTTP/1.1\" 200 10664 \"-\" \"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4\" -";
  9.  
  10. RegexUtil.Match(str,"(\\d+\\.\\d+\\.\\d+\\.\\d+)\\s(\\S.*?)\\s(\\S.*?)\\s\\[(\\S.*?)\\]\\s\\s\"(\\S.*?)\\s(\\S.*?)\\s(\\S.*?)\"\\s(\\S.*?)\\s(\\S.*?)\\s\"\\-\"\\s\"(\\S.*?)\"");
  11.  
  12. }
  13.  
  14. /**
  15. *
  16. * 正则表达式辅助类
  17. *
  18. * @param input 字符串
  19. * @param regex 正则表达式
  20. * @return 正则表达式匹配结果第一条
  21. */
  22. public static void Match(String input,String regex) {
  23.  
  24. Pattern praiseCompile = Pattern.compile(regex);
  25.  
  26. Matcher praiseMatcher = praiseCompile.matcher(input);
  27.  
  28. int num = praiseMatcher.groupCount();
  29.  
  30. while (praiseMatcher.find()) {
  31.  
  32. System.out.println( praiseMatcher.group());
  33. for(int i = 1 ; i<=num ; i++){
  34. System.out.println( "praiseMatcher.group("+i+")------>"+praiseMatcher.group(i));
  35. }
  36. }
  37. }
  38. }

运行结果:

猜你在找的正则表达式相关文章