• 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. }

    【运行结果】

  • 相关阅读:
    毕业设计python选题高校研究生管理系统java选题版本源码 调试 开题 lw
    AI视频监控在畜牧养殖中的技术应用解决方案
    VoLTE基础自学系列 | IMS网络概述
    Nginx 安装第三方模块 不停机 平滑升级 方法2
    利用Github Action实现Tornadofx/JavaFx打包
    编译器的作用和构成 (基础知识版)
    Maven学习(一)
    Python自动化测试的2种思路
    计算器中处于不同进制时
    Vue非父子组件之间的通信
  • 原文地址:https://blog.csdn.net/A_aspectJ/article/details/138165535