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));

        }
    }
}

【运行结果】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/570408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Skill Check: OCI Generative AI Service Deep Dive

Skill Check: OCI Generative AI Service Deep Dive

dial tcp 192.168.0.190:443: connect: connection refused

1、场景 用nerdctl登录镜像仓库192.168.0.190(Harbor),报错 ERRO[0006] failed to call tryLoginWithRegHost error"failed to call rh.Client.Do: Get \"https://192.168.0.190/v2/\": dial tcp 192.168.0.190:…

fakak详解(2)

Kafka和Flume整合 Kafka与flume整合流程 Kafka整合flume流程图 flume主要是做日志数据(离线或实时)地采集。 图-21 数据处理 图-21显示的是flume采集完毕数据之后,进行的离线处理和实时处理两条业务线,现在再来学习flume和kafka的整合处理。 配置fl…

04.JAVAEE之线程2

1.线程的状态 1.1 观察线程的所有状态 线程的状态是一个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) {System.out.println(state);}} } NEW:Thread 对象已经有了.start 方…

AI大模型日报#0424:全球首个AI基因编辑器、出门问问上市、微软开源Phi-3 Mini、昆仑万维年收49亿

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 爱诗科技完成A2轮超亿元融资,蚂蚁集团领投摘要: 爱诗科技完成A2轮超亿元融资,成为视频大模型领域融资规模最…

MySQL中的死锁预防和解决

MySQL中的死锁预防和解决 死锁是数据库管理系统中常见的问题,特别是在高并发的应用场景下。MySQL数据库中的死锁会导致事务处理速度减慢,甚至完全停止,因此理解并预防死锁至关重要。本文将详细介绍如何预防MySQL中的死锁,包括常用…

山海鲸电力看板:运维数据一目了然

在信息化高速发展的今天,电力行业的运维管理也迎来了前所未有的变革。山海鲸可视化智慧电力运维可视化看板,以其独特的数据整合能力和直观的可视化效果,成为了电力行业运维管理的得力助手,为电力的稳定运行提供了强大的技术支撑。…

李沐64_注意力机制——自学笔记

注意力机制 1.卷积、全连接和池化层都只考虑不随意线索 2.注意力机制则显示的考虑随意线索 (1)随意线索倍称之为查询(query) (2)每个输入是一个值value,和不随意线索key的对 (3)通过注意力池…

客服话术分享:客服如何挖掘需求?

电商客服主动挖掘询问顾客需求是非常重要的,这就需要我们具备一定的沟通技巧。今天这篇客服话术分享,很适合想提升业绩的你们哦! 一、打招呼式询问需求: 1.欢迎光临,本店竭诚为您服务~请问您有什么具体想了解的问题吗&…

java-spring 06 图灵 getBean方法和 doGetBean方法

01.一般的流程是,这里是从上一章的preInstantiateSingleton方法顺序过来的。 getBean() -> doGetBean() -> createBean() -> doCreateBean() -> createBeanInstance() -> populateBean() -> initializeBean() 02.getBean方法,一般就…

C语言(1):初识C语言

0 安装vs2022 见 鹏哥视频即可 1 什么是C语言 c语言擅长的是底层开发! 现在一般用的是C89和C90的标准 主要的编辑器: 2 第一个C语言项目 .c 源文件 .h头文件 .cpp c文件 c语言代码中一定要有main函数 标准主函数的写法: int main() { …

菜鸟Java面向对象 1. Java继承

1. Java继承 Java继承 1. Java继承1. 继承的概念_简单介绍继承的用处生活中的继承: 2. 类的继承格式类的继承格式 3. 为什么需要继承企鹅类:老鼠类:公共父类:企鹅类:老鼠类: 4. 继承类型_多重继承5. 继承的…

视频怎么批量压缩?5个好用的电脑软件和在线网站

视频怎么批量压缩?有时候我们需要批量压缩视频来节省存储空间,便于管理文件和空间,快速的传输发送给他人。有些快捷的视频压缩工具却只支持单个视频导入,非常影响压缩效率,那么今天就向大家从软件和在线网站2个角度介绍…

AI建模效果到底行不行?试用这些AI工具告诉你!

当前AI大模型技术浪潮正掀起一股颠覆性的变革浪潮。诸如Midjourney、Stable Diffusion等AI绘画生成工具变得日益成熟,赋能千行百业。在之前的文章中我给大家介绍了很多Midjourney、Stable Diffusion的使用方法和对应的功能: Midjourney vs Stable Diffu…

【连接管理,三次握手,拥塞控制原理】

文章目录 连接管理TCP连接管理同意建立连接TCP3次握手3次握手解决:半连接和接受老数据问题TCP:关闭连接 拥塞控制原理拥塞控制的方法 连接管理 TCP连接管理 TCP连接管理 在正式交换数据之前,发送方和接收方握手建立通信关系: 同…

ECharts海量数据渲染解决卡顿

file模块用来写文件 我们首先使用node来生成10万条数据; 借助node的fs模块就行; 如果不会的小伙伴;也不要担心;超级简单// 引入模块 let fs = require(fs); // 数据内容 let fileCont=我是文件内容 /*** 第一个参数是文件名* 第二个参数是文件内容,这个文件的内容必须是字…

内容平台加码旅游:谁是下一个网红城市

“姐妹们,你们五一啥安排?”早在3月中旬,小威就在询问两个好朋友的行程,“不早早问,怕约不上你们。” 去年以来,国人的旅游需求快速复苏,像小威的朋友一样,之前爱玩的、不爱玩的似乎…

使用Unity扫描场景内的二维码,使用插件ZXing

使用Unity扫描场景内的二维码,使用插件ZXing 使用Unity扫描场景内的二维码,ZXing可能没有提供场景内扫描的方法,只有调用真实摄像机扫描二维码的方法。 实现的原理是:在摄像机上添加脚本,发射射线,当射线打…

世界首台能探测单个原子的量子模拟器,诞生!

量子物理学依赖于高精度的传感技术,以便深入研究材料的微观特性。近期开发的模拟量子处理器显示出量子气体显微镜在原子层面理解量子系统方面的强大潜力。这种显微镜可以生成极高分辨率的量子气体图像,甚至能够检测到单个原子。 在西班牙巴塞罗那的ICFO&…

XxlJob外网访问

Xxl-Job使用外网访问 服务注册中心配置 ### web server.port8088 server.servlet.context-path/xxl-job-admin### actuator management.server.base-path/actuator management.health.mail.enabledfalse### resources spring.mvc.servlet.load-on-startup0 spring.mvc.static…