• java正则表达式(八)


    八、分组

    我们已经提到了怎么重复单个元素(直接在元素后面加上限定符就可以了),如果要重复多个元素该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式重复的次数了。

    在正则表达式中,被小括号括起来的子表达式称为捕获组,正则表达式在求值期间将保存匹配这些捕获组表达式的输入子序列。一旦完全匹配操作完成,这些保存的代码片断可通过确定相应的组号从 Matcher对象上重新获取。捕获组可以嵌套使用,数量可以通过从左到右计算左括弧(开括号)得到。无论整个表达式是否有子组,它的捕获组总能记为组零(group zero)。例如,正则表达式 A((B)(C(D)))可能有的捕获组编号如下所示:

    A((B)(C(D))) 的正则表达式捕获组
    组号    表达式组
    0      A((B)(C(D)))
    1       ((B)(C(D)))
    2     (B)
    3     (C(D))
    4     (D)

    代码示例如下:

     1 public class RegExp {
     2       private Pattern patt;
     3       private Matcher matcher;
     4      private String regExpValue(String regStr,String regex){
     5           String value="";
     6           patt=Pattern.compile(regex);
     7           matcher=patt.matcher(regStr);
     8           while(matcher.find()){
     9               value=matcher.group(1).trim();            
    10              break;
    11          }
    12          return value;
    13      }
    14  }
    15  
    16  public class TestRegExp {
    17      public static void main(String[] args) {
    18          RegExp re=new RegExp();
    19          boolean wildcard_Res=false;
    20       String logEntry="256.275.285.295 - - [26/Feb/2001:10:56:03 -0500] GET /IsAlive.htm HTTP/1.0\\ 200 15";
    21       String regex="(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}).+?";
    22         String value=re.regValue(logEntry, regex);
    23          System.out.println(value);
    24      //value= 256.275.285.295
    25    }
    26  }
  • 相关阅读:
    Zabbix实现企业微信(WeChat)告警
    Zabbix使用腾讯企业邮箱发送警报邮件,在微信查看警报邮件
    centos7安装pip
    zabbix源码安装3.4.11客户端和yum安装4.2.1客户端
    zabbix中文乱码解决
    centos7配置阿里yum源替换centos自带的yum源(其他镜像yum源配置相似)
    CentOS7.5下Redis5.0.5安装与配置
    LVS+Keepalived搭建高可用负载均衡
    centos7配置双ip(内外网均可访问)
    NSMutableAttributedString 的使用
  • 原文地址:https://www.cnblogs.com/loritin/p/2736205.html
Copyright © 2020-2023  润新知