前言

在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做:

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

Matcher matcher = pattern.matcher(content);

if (matcher.find()) {

String result= matcher.group();

}

其中牵涉到多个对象,想用的时候真心记不住。好吧,既然功能如此常用,我就封装一下:

/**

* 获得匹配的字符串

*

* @param pattern 编译后的正则模式

* @param content 被匹配的内容

* @param groupIndex 匹配正则的分组序号

* @return 匹配后得到的字符串,未匹配返回null

*/

public static String get(Pattern pattern, String content, int groupIndex) {

Matcher matcher = pattern.matcher(content);

if (matcher.find()) {

return matcher.group(groupIndex);

}

return null;

}

/**

* 获得匹配的字符串

*

* @param regex 匹配的正则

* @param content 被匹配的内容

* @param groupIndex 匹配正则的分组序号

* @return 匹配后得到的字符串,未匹配返回null

*/

public static String get(String regex, String content, int groupIndex) {

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

return get(pattern, content, groupIndex);

}

其他方法介绍

其他方法我做了一个Demo类,方便大家参考,地址:

或者

Demo代码

package com.xiaoleilu.hutool.demo;

import java.util.ArrayList;

import java.util.List;

import org.slf4j.Logger;

import com.xiaoleilu.hutool.Log;

import com.xiaoleilu.hutool.ReUtil;

/**

* 正则表达式工具类Demo

* @author Looly

*

*/

public class ReUtilDemo {

private final static Logger log = Log.get();

public static void main(String[] args) {

String content = "ZZZaaabbbccc中文1234";

//get demo 正则查找匹配的第一个字符串

String resultGet = ReUtil.get("\\w{2}", content, 0);

log.debug("get: {}", resultGet);

log.debug("---------------------------------------------------------");

//抽取多个分组然后把它们拼接起来

String resultExtractMulti = ReUtil.extractMulti("(\\w)aa(\\w)", content, "$1-$2");

log.debug("extractMulti: {}", resultExtractMulti);

log.debug("---------------------------------------------------------");

//抽取多个分组然后把原文匹配到位置之前的内容都删除

String[] contents = new String[]{content};

String resultExtractMultiAndDelPre = ReUtil.extractMultiAndDelPre("(\\w)aa(\\w)", contents, "$1-$2");

log.debug("extractMultiAndDelPre: content: {}, extract: {}", contents[0], resultExtractMultiAndDelPre);

log.debug("---------------------------------------------------------");

//删除第一个匹配到的内容

String resultDelFirst = ReUtil.delFirst("(\\w)aa(\\w)", content);

log.debug("delFirst: {}", resultDelFirst);

log.debug("---------------------------------------------------------");

//删除第一个匹配到的内容以及之前的文本

String resultDelPre = ReUtil.delPre("(\\w)aa(\\w)", content);

log.debug("delPre: {}", resultDelPre);

log.debug("---------------------------------------------------------");

//查找所有匹配文本

List resultFindAll = ReUtil.findAll("\\w{2}", content, 0, new ArrayList());

log.debug("findAll: {}", resultFindAll);

log.debug("---------------------------------------------------------");

//找到匹配的第一个数字

Integer resultGetFirstNumber= ReUtil.getFirstNumber(content);

log.debug("getFirstNumber: {}", resultGetFirstNumber);

log.debug("---------------------------------------------------------");

//格式是否符合Ipv4格式

log.debug("isIpv4: {}", ReUtil.isIpv4("127.0.0.1"));

log.debug("---------------------------------------------------------");

//给定字符串是否匹配给定正则

log.debug("isMatch: {}", ReUtil.isMatch("\\w+[\u4E00-\u9FFF]+\\d+", content));

log.debug("---------------------------------------------------------");

//通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串

log.debug("replaceAll: {}", ReUtil.replaceAll(content, "(\\d+)", "->$1

log.debug("---------------------------------------------------------");

//转义给定字符串,为正则相关的特殊符号转义

log.debug("replaceAll: {}", ReUtil.escape("我有个$符号{}"));

log.debug("---------------------------------------------------------");

}

}

我的项目地址:

java正则表达式 工具类_Hutool之正则表达式工具类——ReUtil相关推荐

  1. java生日正则表达式_Java编程基础15——正则表达式常用工具类

    1_正则表达式的概述和简单使用 A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有用户名和密码,一般会 ...

  2. java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...

    今日内容介绍 u  Object类 & System类 u  日期相关类 u  包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...

  3. Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

    Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...

  4. 【java工具类-抓取图片】正则抓取内容里面的j图片,正则,图片替换格式处理图片java处理文章内容里面的图片格式化工具类,能够最大限度的自动是被图片IMG标签和java使用正则抓取图片说明

    目录 1.java处理图片格式自动抓取格式案例 java代码运行案例: 自动抓取的结果如下 2.java代码去除HTML的格式进行返回无格式文本代码 可以经过正则过滤掉,里面的HTML格式,删除空格, ...

  5. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  6. Java中封装的全局日期处理工具类

    场景 全局日期处理类. 时间日期操作类,集成了大部分时间的应用类. 主要功能如下: 获取SimpleDateFormat 获取日期中的某数值.如获取月份 增加日期中某类型的某数值.如增加日期 获取精确 ...

  7. linux隔行打印文本,详解正则表达式及Linux三大文本处理工具

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [ ...

  8. java前补零工具类_java生成编码工具类,不足补0

    ~~~~~ 小小工具类!你值得拥有 简单粗暴,直接上代码 import java.text.NumberFormat; /** * @author: Abner * @description: 编码工 ...

  9. java 获取service_Java service层获取HttpServletRequest工具类的方法

    Java service层获取HttpServletRequest工具类的方法 大家都知道 能在Controller/action层获取HttpServletRequest,但是这里给大家备份的是从代 ...

  10. java 工具类sort_Java 通用排序工具类ListSortUtils

    场景:Java 类 需 重新排序,有时升序.有时倒叙,有时是多字段排序 代码: package GenericTest; import java.lang.reflect.InvocationTarg ...

最新文章

  1. Seam的中文化支持
  2. Javascript对于不同浏览器的兼容性
  3. do {...} while (0) 在宏定义中的作用
  4. 计算机屏幕显示电缆借口,电脑关机后显示器显示请检查电缆接口怎么办成功解决...
  5. Fastreport.Net用户手册:报表对象
  6. Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh
  7. cad服务器手动改自动,几百块就能手动改自动? 怎样省钱换来方便
  8. springboot集成jsp
  9. 服气!蹭热点无敌,麦当劳发布“5G”新品:真香
  10. IT招聘负责人:成功简历六大要素
  11. springboot整合mybatis-plus多数据源分别连接mysql和oracle
  12. linux Shell学习笔记第二天
  13. 2022-2028年全球与中国硬盘驱动器存储模块行业深度分析
  14. 点计算机管理没反应,电脑任务栏卡住,点击没有反应怎么办?
  15. 海马玩模拟器离线安装包下载方法
  16. 裸片IC的简单介绍以及裸片IC的封装设计
  17. 重温数据结构与算法之单调栈
  18. NTL密码算法开源库——大整数ZZ类(二)
  19. 政策热市场冷 中国新能源汽车遇尴尬
  20. 微信小程序码中间Logo修改

热门文章

  1. linux dbm数据库,Linux dbm遇到的一些问题
  2. linux http error 401,出现HTTP: 401 的时候的解析思路
  3. 关键词百度指数叠加-关键词百度指数叠加
  4. 打造智慧城市 构建新型城镇化
  5. My Thirty-Second Page - 对称二叉树 - By Nicolas
  6. diamond源码解析
  7. gst-rtsp-server 开源包的说明
  8. 基于Pandas的股票数据分析
  9. 电脑和微信怎么发邮件到别人邮箱,企业邮箱如何发email给别人
  10. 【drawio笔记】在drawio中添加数学公式