博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式应用实例
阅读量:6089 次
发布时间:2019-06-20

本文共 1003 字,大约阅读时间需要 3 分钟。

零宽断言

1、有这样的需求,请求一个接口返回下面的xml:

000000
成功

现在需要一个简单的处理:如果返回的code为"000000"则在前面加"00"。否则加"10"。利用正则中的(?=exp)和(?<=exp)可以很容易解决:

  • (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
  • (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。

Java中String类的replaceAll方法也可以使用正则表达式。

protected String transferErrorCode2(String response) {        String patternStr = "(?<=)\\d+(?=)";        Pattern pattern = Pattern.compile(patternStr);        Matcher matcher = pattern.matcher(response);        if (matcher.find()) {            String match = matcher.group(0);            String replace = (match.equals("000000") ? "00" : "10") + match;            return response.replaceAll(patternStr, replace);        } else {            return response;        }    }

 

2、解析类似如下html片段中的车牌号:

车牌号码:京NC4Y59\t\t\t\t\t
  •  java中用下面的正则表达式可以处理:

    (?<=车牌号码:)\\S+(?=\\s)

     同样用的是零宽断言,不过需要注意的是,这里用\\S+来匹配任意非空白字符,包括汉字。我刚开始想到的是用.来匹配:

    (?<=车牌号码:).+(?=\\s)

     得到的确实类似下面的结果:

    京NC4Y59                

     这里“.”可以这样理解:“后面所有跟着空白字符(\\s)的字符”。

     

    待补充……

     

    转载地址:http://odlwa.baihongyu.com/

    你可能感兴趣的文章
    2019年春季学期第四周作业
    查看>>
    linux环境配置
    查看>>
    tomcat指定配置文件路径方法
    查看>>
    linux下查看各硬件型号
    查看>>
    epoll的lt和et模式的实验
    查看>>
    Flux OOM实例
    查看>>
    07-k8s-dns
    查看>>
    Android 中 ListView 分页加载数据
    查看>>
    oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
    查看>>
    Go方法
    查看>>
    Dapper丶DapperExtention,以及AbpDapper之间的关系,
    查看>>
    搞IT的同学们,你们在哪个等级__那些年发过的帖子
    查看>>
    且谈语音搜索
    查看>>
    MySQL数据库导入导出常用命令
    查看>>
    低版本Samba无法挂载
    查看>>
    Telegraf+Influxdb+Grafana构建监控平台
    查看>>
    使用excel 展现数据库内容
    查看>>
    C#方法拓展
    查看>>
    MySql.Data.dll的版本
    查看>>
    Linux系统磁盘管理
    查看>>