Java正则表达式 提取文本中所有的匹配数据

前言

在Java编程中,有时我们需要从字符串中找出符合某种规则的字符串。这时候,我们可以使用正则表达式来进行模式匹配。正则表达式是一种强大的文本匹配工具,它可以用来匹配复杂的字符串模式。

正则表达式的基础

正则表达式是一种通过字符模式来匹配和查找字符串的工具。它由一些特殊字符和普通字符组成,可以用来定义搜索模式。
以下是一些常用的正则表达式元字符:

  • . :匹配任意单个字符(除了换行符)。
  • * :匹配前面的元素零次或多次。
  • + :匹配前面的元素一次或多次。
  • ? :匹配前面的元素零次或一次。
  • [] :匹配方括号内的任意一个字符。
  • () :分组,将括号内的内容作为一个整体进行匹配。

使用Java正则表达式的步骤

在Java中,使用正则表达式需要以下几个步骤:
1.创建一个正则表达式模式对象。
2.使用模式对象创建一个匹配器对象。
3.使用匹配器对象进行匹配操作。

示例代码

以下是两个示例代码,演示如何使用Java正则表达式来获得所有匹配值:

【代码案例1】

//提取文本中所有以订单开头的内容
public class RegexDemo1 {

    public static void main(String[] args) {

        String str = "我的订单KMJ0801,我的订单KMJ0802订单,订单KMJ0888,我的订单KMJ0808,3月28号购票的不是订单KMJ0803,订单编号KMJ0801。";
        String regex = "订单.+?";

        Pattern pattern = Pattern.compile(regex);
        Matcher m = pattern.matcher(str);
        int start = 0;
        int end = 0;
        while (m.find()) {
//            System.out.println("-------------"+m.start());
            end= m.start();
            if (end == 0) {
                continue;
            }
            if (start > 0) {
//                System.out.println("============="+start);
                System.out.println(str.substring(start, end));
            }
            start = end;
        }
        System.out.println(str.substring(start));
    }
}

【运行结果】

 【代码案例2】

//提取文本中依次出现的匹配内容,输出打印
public class RegexDemo2 {

    public static void main(String[] args) {

        String str = "订单KLS000681,徐丹丹(先生/女士)您已购买2024年05月02日G89次09车2A号,上海南11:10开,检票口:A1。请持购票证件进站乘车,谢谢。";

        String regex = "^订单(.*),(.*)您已购买(.{1,4})年(.{1,2})月(.{1,2})日(.*次)(.*号),(.*)(([0-9]\\d:+)([0-9])+开),(.*)$";

        Pattern pattern = Pattern.compile(regex);

        Matcher m = pattern.matcher(str);

        if (m.find()) {
            System.out.println("订单编号:"+ m.group(1));

            System.out.println("姓名:" + m.group(2));

            System.out.println(m.group(3));

            System.out.println(m.group(4));

            System.out.println(m.group(5));

            System.out.println(m.group(6));

            System.out.println(m.group(7));

            System.out.println(m.group(8));

        }
    }
}

【运行结果】

  • 47
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值