Java简化正则表达式的使用(抽取工具类)

Java常用字符串工具类 字符串智能截取(3) 主要为大家详细介绍了Java常用字符串工具类,字符串的智能截取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

使用:RegexString.with(string).pattern(pattern).start() + 后续操作(matches,find或者是replace)

抽取如下工具类:

package com.js;

import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author jiangshuai 用于简化处理正则表达式
 */
public class RegexString {

    private String string;
    private Pattern pattern;
    private Matcher matcher;

    ////////////////////// Constructor //////////////////////

    /**
     * 正则表达式对象
     * 
     * @param str
     *            初始化用的字符串
     */
    public RegexString(String str) {
        setString(Objects.requireNonNull(str));
    }

    ////////////////////// Normal Method //////////////////////

    /**
     * 设置正则表达式的pattern
     * 
     * @param regex
     *            正则表达式语句
     * @return RegexString
     */
    public RegexString pattern(String regex) {
        setPattern(Pattern.compile(regex));
        return this;
    }

    /**
     * 设置正则表达式的pattern
     * 
     * @param regex
     *            正则表达式语句
     * @param flags
     *            正则表达式flag值
     * @return RegexString
     */
    public RegexString pattern(String regex, int flags) {
        setPattern(Pattern.compile(regex, flags));
        return this;
    }

    /**
     * 正则表达式对象开始匹配(设置完pattern后需要自行此语句才能做后续操作)
     * 
     * @return RegexString
     */
    public RegexString start() {
        setMatcher(pattern.matcher(string));
        return this;
    }

    /**
     * 进行文本替换
     * 
     * @param replacement
     *            用来替换的文本
     * @return 替换后的字符串
     */
    public String replace(String replacement) {
        return getMatcher().replaceAll(replacement);
    }

    /**
     * 判断是否匹配(一次性匹配全部文本,不分步)
     * 
     * @return 匹配了返回true,没有匹配返回false.
     */
    public boolean matches() {
        return getMatcher().matches();
    }

    /**
     * 判断是否匹配(分步匹配文本,请结合while循环使用)
     * 
     * @return 找到了返回true,没有找到返回false.
     */
    public boolean find() {
        return getMatcher().find();
    }

    /**
     * find()操作成功后,可以通过matchString()获取匹配的字符串
     * 
     * @return 匹配的字符串
     */
    public String matchString() {
        return getMatcher().group();
    }

    /**
     * find()操作成功后,可以通过matchStart()获取匹配的起始位置
     * 
     * @return 匹配的起始位置
     */
    public int matchStart() {
        return getMatcher().start();
    }

    /**
     * find()操作成功后,可以通过matchEnd()获取匹配的结束位置
     * 
     * @return 匹配的起始位置
     */
    public int matchEnd() {
        return getMatcher().end();
    }

    ////////////////////// Static Method //////////////////////

    /**
     * [静态方法] 便利构造器
     * 
     * @param str
     *            初始化用的字符串
     * @return RegexString
     */
    public static RegexString with(String str) {
        return new RegexString(str);
    }

    ////////////////////// Getter & Setter //////////////////////

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

    public Pattern getPattern() {
        return pattern;
    }

    public void setPattern(Pattern pattern) {
        this.pattern = pattern;
    }

    public Matcher getMatcher() {
        return matcher;
    }

    public void setMatcher(Matcher matcher) {
        this.matcher = matcher;
    }
}

使用示例:

package com.js;

public class Main {

    public static void main(String args[]) {

        // 查找文本
        {
            String src = "This is my small example string which I'm going to use for pattern matching.";
            RegexString string = RegexString.with(src).pattern("\\w+").start();
            while (string.find()) {
                System.out.println(string.matchStart() + "," + string.matchEnd() + " : " + string.matchString());
            }
        }
        
        // 匹配
        {
            String src = "This is my small example string which I'm going to use for pattern matching.";
            if (RegexString.with(src).pattern("^This.+$").start().matches()) {
                System.out.println("Yes");
            }
        }

        // 替换文本
        {
            String src = "This is my small example string which I'm going to use for pattern matching.";
            System.out.println(RegexString.with(src).pattern("\\w+").start().replace("Regex"));
        }

        // 去掉字符串首尾的空格,以及字符串中间多余的字符串
        {
            String src = "   This    is    my small example string    which  I'm    going to    use  for  pattern  matching.     ";
            String tmp = RegexString.with(src).pattern("^\\s+|\\s+$").start().replace("");
            String des = RegexString.with(tmp).pattern("\\s+").start().replace(" ");
            System.out.println("\"" + des + "\"");
        }
    }
}



GLM-4本地部署的实战教程 本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat 阅读详情

相关推荐

【芯片驱动】2. CMT2300A配合硬件测试(灵敏度和发射功率)的软件实现

前言 在开发一款无线射频产品的时候,软件是一部分,硬件也是一部分。而决定无线收发性能的,首先是硬件的匹配电路,然后才到软件部分的优化。 一款无线射频产品,首先需要先决定是在那个频率范围内(当然是国家允许的范围内),然后硬件则需要在基于这个频点范围进行硬件的参数匹配,具体又分为发送功率匹配、天线匹配、和接收灵敏度的匹配。 现在我们使用2300a这款无线芯片来说,除非自己的团队是射频专家,则可以自己进行无线外围电路的设计外,另外一种更加快捷的方式,就是寻找原厂技术支持,他们会给...

sishuihuahua的博客 7055

GoVerbalExpressions:简化正则表达式的强大工具

GoVerbalExpressions:简化正则表达式的强大工具 在编程世界中,正则表达式是处理字符串的强大武器,但它的复杂性往往让人望而却步。为了缓解这一痛点,我们有【GoVerbalExpressions】——一个专为Golang设计的库,旨在让编写和理解正则表达式变得轻松愉快。 项目介绍 GoVerbalExpressions 是一个基于Go语言实现的库,它将构建复杂的正则表达式转化为自然语...

gitblog_00036的博客 408

2026年4月AI爆发周:阿里连推三款模型、字节全双工语音上线,国内大模型进入“落地竞速“新阶段

**摘要:**2026年4月初,国内AI大模型迎来密集发布,阿里、字节、腾讯分别推出新产品。阿里一周发布三款模型,覆盖通用推理、多模态轻量化和长文档处理,API价格大幅下降;字节推出全双工语音模型,实现实时交互,技术难度高;腾讯混元3.0强调工程化和生态整合,面向企业私有化部署。趋势显示,行业从性能竞赛转向落地竞赛,多模态成为主战场,API成本降低,开发者选择更丰富。国内大模型竞争重点转向实际应用和生态整合。

weixin_45526015的博客 1万+

Java正则表达式:强大的字符串匹配工具

然而,在使用正则表达式时,需要理解其基础概念、掌握常见的应用场景,并注意性能优化和特殊字符的转义。本文将介绍Java正则表达式的基本概念、语法和常见应用场景,以及一些实用技巧,帮助开发人员充分发挥正则表达式在字符串处理中的作用。转义字符:一些特殊字符在正则表达式中具有特殊的含义,如果要匹配这些字符本身,需要使用转义字符进行转义,如"."表示匹配点字符。可以使用非贪婪匹配模式来只匹配最小的字符片段。边界匹配:通过使用边界匹配元字符,如^表示行的开头,$表示行的结尾,可以限定匹配发生的位置,实现更精确的匹配。

sun13047140038的博客 604

Vivado ILA抓不到低频信号?试试Capture Control模式,保姆级配置教程(附PWM调试实例)

本文详细解析了Vivado ILA的Capture Control模式在低频信号捕获中的应用,特别针对PWM调试等场景提供保姆级配置教程。通过条件采样和时间拉伸技术,有效解决传统ILA采样在低频信号调试中的存储深度不足、关键信号丢失等问题,并附赠呼吸灯PWM的完整调试实例,帮助FPGA开发者提升调试效率。

weixin_42549451的博客 350

AI for Science:GNN预测分子性质全流程详解与工业实践

从分子表示到工业落地,一文掌握图神经网络在药物研发与材料设计中的核心实战近年来,的浪潮正深刻变革着传统科研范式。在药物研发与材料设计领域,作为核心环节,已从传统的实验试错转向基于图神经网络(GNN)的智能计算。本文将深入解析GNN预测分子性质的,涵盖数据准备、模型设计、训练优化到工业部署,并揭秘前沿技术与实战案例。

datacanvas2426的博客 1674

Java校验手机号格式

package com.shucha.digitalportalbackstage.biz.utils; import org.springframework.stereotype.Component; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author tqf * @Description 手机号格式校验 * @Version 1.0 * @since 2022-03-15 15:28 .

tanqingfu1的博客 1965

DeepSeek R1-32B医疗大模型的完整微调实战分析(全码版)

【代码】DeepSeek R1-32B医疗大模型的完整微调实战指南(全码版)

AllenLV的博客 5103

Java正则表达式验证工具类

Java正则表达式应用

qq_42211536的博客 895

Open3D 点云DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够识别任意形状的聚类,并处理噪声数据。

纵马踏花向自由 1835

手机直连低轨卫星通信:架构、关键技术和未来展望

【摘 要】借助低轨卫星星座全时全域覆盖优势,手机直连卫星通信预期成为6G重要特征之一。首先介绍了手机直连卫星的测试验证、标准化与商业项目发展现状。其次,介绍了基于透明转发、部分可再生处理、完全可再生处理、集成接入和回传的四种手机直连低轨卫星网络架构及组网方式。通过分析手机直连低轨卫星网络场景下高移动性与大传输时延等带来的接入与传输问题,提出对地面移动通信体制进行适应性改进的关键技术方案。最后,探讨了未来手机直连低轨卫星发展发向和潜在思路。通过上述阐述与分析,提供未来发展手机直连低轨卫星通信的可行路径。【关

fzq0625的博客 1708

java正则表达式工具类(RegexUtils)

Java正则表达式工具类(RegexUtils)是一个封装了常用正则表达式操作的工具类。它提供了一系列静态方法,用于匹配、查找、替换、拆分等操作。正则表达式是一种强大的字符串匹配模式,可以用于验证、过滤、提取等操作。Java的java.util.regex包提供了对正则表达式的支持,但使用起来比较繁琐。RegexUtils的目的就是简化正则表达式的使用,提供更方便的操作方法。:判断输入字符串是否与正则表达式匹配。:判断输入字符串是否完全匹配正则表达式。:查找输入字符串中与正则表达式匹配的子串。

Flying_Fish_roe的博客 2129

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 中的每个 Skill,本质是一套“能力描述 + 执行逻辑”的组合包,核心特征如下:核心载体:以文件夹为单位,文件夹内必须包含SKILL.md文件(能力描述核心);扩展文件:可选agent.py(Python 执行逻辑)、index.ts(TypeScript 执行逻辑)、(辅助文档/示例资源)等;核心优势:AI 通过阅读 SKILL.md 的自然语言描述理解技能,无需严格遵循代码接口,灵活度极高;

haolove527的专栏 2万+

java正则表达式 工具类_Hutool之正则表达式工具类——ReUtil

前言在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做:Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);Matcher matcher = pattern.matcher(content);if (matcher...

weixin_28858247的博客 3462

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

re管理器java格式_正则表达式工具类——ReUtil

前言在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做:Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);Matcher matcher = pattern.matcher(content);if (matcher...

weixin_30252651的博客 844

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java进阶,时间与日期,包装类,正则表达式

正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。字符串对象提供了匹配正则表达式的方法public boolean matches([String](file:///D:/course/%E5%9F%BA%E7%A1%80%E9%98%B6%E6%AE%B5/API%E6%96%87%E6%A1%A3/docs/api/java.base/java/lang/String.html) regex): 判断是否匹配正则表达式,匹配返回true,不匹配返回false。

lucky6707的博客 799

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hutool之正则表达式工具类——ReUtil

为什么80%的码农都做不了架构师?>>> ...

weixin_34000916的博客 4944

正则表达式抽取特定字符窜

在Java中可以使用正则表达式抽取一个字符串中特定的字符串,直接上样例代码import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestPatternFind {     public static void main(String[] args) {         String testString = "xxxxxxx1234xxxxxxx5678xxxxx12xxx1xxx";       

Jinuxwu的专栏 3405

利用正则表达式抽取句子

有这样一种模式的文本: Figure 2a. ****.(a).*******. (b).*********.(c).************. Figure 3d. (a).*******. (b,c,d).*****. (b).***********.(c).********.(d).******** Figure 1a. ****.(a,b).********. 要求,对于“Figu

tianchengbo1986的专栏 1362

网页抽取技术和算法

网页抽取技术和算法,持续更新。本文由WebCollector提供,转载请标明出处。目录: 网页抽取简介 基于正则表达式的网页抽取 基于CSS选择器的网页抽取 基于机器学习的网页抽取 一. 网页抽取简介网页抽取在大多数情况下,指提取网页中的结构化数据。网页抽取技术近十几年方法和工具变化都较快。常见的网页抽取方法有 : 基于正则表达式的网页抽取 基于CSS选择器的网页抽取 基于XPATH的网页抽取 基于

AJAXHu的专栏 1万+

java使用正则表达式提取符合条件的字符串

import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * 类名称: [字符串处理类] * * * 类描述: [字符串处理类] * * * 所属模块: Serv

6427

java正则表达式 匹配模式_Java中正则表达式、模式匹配与信息抽取

引言记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论、用户信息等属性信息,直接利用HtmlParser得到。如此做倒是简单,不过利用的是网页的规范的tag标记。其实java中的正则表达式也可以用来实现这一功能。而且对于非tag的一些有规律的系列组合的字符串,正则表达式更能够发挥其卓越的功能。大学时候曾经就接触过正则表达式,不过只是略知皮毛。现在也无心学习,上面的链接...

weixin_35757531的博客 183

JAVA正则表达式的模式匹配_Java中正则表达式、模式匹配与信息抽取

正则表达式相关介绍详细参考:http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html引言记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论、用户信息等属性信息,直接利用HtmlParser得到。如此做倒是简单,不过利用的是网页的规范的tag标记。其实java中的正则...

weixin_35998762的博客 121

代码抽取(变量,常量,前缀,断言工具类,公共代码抽取jar包)

4.4 redis的config文件(用来做序列化和生成redistemplate的)4.5 写一个配置类(这里可以对前面的类进行bean注入;其它项目扫描的是该配置类)注意:在抽取的项目中不能出现@Component和@Autoward(无效)1. 在SpringBoot项目中:抽取变量(通过读配置文件获取变量)4. 公共代码抽取(这里以抽取图形验证码和短信验证码为例)4.2 提前导入依赖(redis依赖是用来存验证码的)4.7 项目需要使用该抽取代码,则需要导入该依赖。4.6 在抽取项目的。

weixin_73221891的博客 241

Java抽取网页信息

使用正则表达式及字符串操作,抽取网页信息 /* 去script */    public static String trimScript(String content) {        String regEx = "]*>[^";        Pattern p = Pattern.compile(regEx);        Matcher m = p.m

PengJune的专栏 1298
上一篇: Hibernate学习-14:实体之间的关系及其配置,级联操作
下一篇: 线程池的一点知识(附示例代码)
Yes_JiangShuai
博客等级 码龄10年 149粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值