正则表达式

背景

最近真是被正则表达式折磨到了,在写代码过程中,需要获取接口返回数据中的某一段内容,不得不用上正则表达式,但是真的好难记住啊,写了两次正则表达式,遂记录常用的方法。

需求

获取某个字段中以A字段开始之后的字段

获取某个字段中以A字段开始和B字段结束的中间字符

过程

代码如下

private String getRevision(String message){
        String regex="(?<=https://phab.devops.xxxxx.com/D)\\d*$";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(message);
        if(m.find()){
            return m.group(0);
        }else{
            return null;
        }
    }

    private String getBizLine(String message){
        String regex="(?<=\\[).*?(?=])";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(message);
        if(m.find()){
            return m.group(0);
        }else{
            return null;
        }
    }

基础用法:正则表达式 – 语法 | 菜鸟教程

代码中用到了以下几种用法:

1.?<=

(?<=exp2)exp1:查找 exp2 后面的 exp1。

2.$

匹配输入字符串的结尾位置

3.\d

匹配一个数字

4.*

匹配前面的子表达式零次或多次

5..

匹配除换行符 \n 之外的任何单字符

6.[

标记一个中括号表达式的开始。要匹配 [,请使用 \[

7.?=

exp1(?=exp2):查找 exp2 前面的 exp1。

8.?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

9.Pattern和Matcher类

  • Pattern 类:

    pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

  • Matcher 类:

    Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

Matcher.find():是否存在与该模式匹配的下一个子序列。简单来说就是在字符某部分匹配上模式就会返回true,同时匹配位置会记录到当前位置,再次调用时从该处匹配下一个。

Matcher.group():

  1. Matcher 类中group(0) 表示正则表达式中符合条件的字符串。

  2.Matcher 类中 group(1) 表示正则表达式中符合条件的字符串中的第一个() 中的字符串。

  3.Matcher 类中 group(2) 表示正则表达式中符合条件的字符串中的第二个() 中的字符串。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值