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


    前言

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

    正则表达式的基础

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

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

    使用Java正则表达式的步骤

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

    示例代码

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

    【代码案例1】

    1. //提取文本中所有以订单开头的内容
    2. public class RegexDemo1 {
    3. public static void main(String[] args) {
    4. String str = "我的订单KMJ0801,我的订单KMJ0802订单,订单KMJ0888,我的订单KMJ0808,3月28号购票的不是订单KMJ0803,订单编号KMJ0801。";
    5. String regex = "订单.+?";
    6. Pattern pattern = Pattern.compile(regex);
    7. Matcher m = pattern.matcher(str);
    8. int start = 0;
    9. int end = 0;
    10. while (m.find()) {
    11. // System.out.println("-------------"+m.start());
    12. end= m.start();
    13. if (end == 0) {
    14. continue;
    15. }
    16. if (start > 0) {
    17. // System.out.println("============="+start);
    18. System.out.println(str.substring(start, end));
    19. }
    20. start = end;
    21. }
    22. System.out.println(str.substring(start));
    23. }
    24. }

    【运行结果】

     【代码案例2】

    1. //提取文本中依次出现的匹配内容,输出打印
    2. public class RegexDemo2 {
    3. public static void main(String[] args) {
    4. String str = "订单KLS000681,徐丹丹(先生/女士)您已购买2024年05月02日G89次09车2A号,上海南11:10开,检票口:A1。请持购票证件进站乘车,谢谢。";
    5. String regex = "^订单(.*),(.*)您已购买(.{1,4})年(.{1,2})月(.{1,2})日(.*次)(.*号),(.*)(([0-9]\\d:+)([0-9])+开),(.*)$";
    6. Pattern pattern = Pattern.compile(regex);
    7. Matcher m = pattern.matcher(str);
    8. if (m.find()) {
    9. System.out.println("订单编号:"+ m.group(1));
    10. System.out.println("姓名:" + m.group(2));
    11. System.out.println(m.group(3));
    12. System.out.println(m.group(4));
    13. System.out.println(m.group(5));
    14. System.out.println(m.group(6));
    15. System.out.println(m.group(7));
    16. System.out.println(m.group(8));
    17. }
    18. }
    19. }

    【运行结果】

  • 相关阅读:
    领域驱动设计——领域的重构
    shiro550反序列化漏洞
    SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析-中
    qian‘kun微服务配置vue3.2+ts+vite子应用教程
    python可视化模块pandas,python数据可视化软件
    Hadoop1_hadoop概览
    深入操作系统内核!细致剖析 MIT 6.S081 课程 Lab 2 : system calls - 1
    【计算机组成原理】定点数和浮点数
    气导耳机是什么?值得推荐的气传导耳机分享
    【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod
  • 原文地址:https://blog.csdn.net/A_aspectJ/article/details/138165535