正则表达式

本文介绍了如何使用正则表达式在编程中提取特定数据,包括以特定字段开始和结束的内容。通过示例代码展示了`(?<=exp2)exp1`和`$(...)`等关键用法,以及Matcher类的find()和group()方法。这些技巧对于处理接口返回的数据和日志分析非常实用。
摘要由CSDN通过智能技术生成

背景

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

需求

获取某个字段中以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、付费专栏及课程。

余额充值