Java中处理正则表达式的工具类——总有一个适合你
时间:2022-04-29
本文章向大家介绍Java中处理正则表达式的工具类——总有一个适合你,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.haohaosh.common.util.string.EmptyUtil;
/**
* @项目名 ssh
* @功能 正则表达式工具类
* @类名 RegexUtil
* @作者 Java自学通
* @日期 Aug 30, 20113:29:10 PM
* @版本 1.0
*/
public class RegexUtil {
/**
* 替换HTML标签
*
* @param sourceContent
* 内容
* @param expelTag
* 要保留的标签
* @return 替换后的内容
*/
public static String ReplaceHTMLTag(String sourceContent, String expelTag) {
if (!EmptyUtil.isNotEmpty(sourceContent))
return null;
StringBuffer regex = new StringBuffer();
if (EmptyUtil.isNotEmpty(expelTag)) {
regex.append("((?!").append(expelTag).append(
")(<[^一-龥]+?>))")
.append("|</[^一-龥]+?>");
sourceContent = sourceContent.replaceAll(regex.toString(), "")
.replaceAll("<", "<").replaceAll(">", ">")
.replaceAll(
"<" + expelTag.replace("<", "").replace(">", "")
+ ">", expelTag);
} else {
regex.append("<[^一-龥]+?>").append(
"|</[^一-龥]+?>");
sourceContent = sourceContent.replaceAll(regex.toString(), "")
.replaceAll("<", "<").replaceAll(">", ">");
}
return sourceContent;
}
/**
* 替换所有标签
*
* @param content
* 内容
* @return 替换后的内容
*/
public static String ReplaceHTMLTagAll(String content) {
if (!EmptyUtil.isNotEmpty(content))
return "";
return content.replaceAll("<.+?>", "").replaceAll("<", "<")
.replaceAll(">", ">");
}
/**
* 根據正則運算式和下標得到解析后的內容
*
* @param content
* 內容
* @param regex
* 正則運算式
* @param index
* 下標
* @return 解析后的內容
*/
public static String getContentByRegex(String content, String regex,
int index) {
List<String> result = RegexUtil.getContentByRegexs(content, regex);
String str = "";
if (result != null && result.size() > 0) {
if (index > result.size()) {
str = result.get(result.size() - 1);
} else if (index <= 0) {
str = result.get(0);
} else {
str = result.get(index - 1);
}
}
return str;
}
/**
* 根据正则表达式获得解析后的内容;
*
* @param content
* 内容;
* @param regex
* 正则表达式;
* @return 解析后的集合内容;
*/
public static List<String> getContentByRegexs(String content, String regex) {
Matcher mt = getMatcher(content, regex);
List<String> result = new ArrayList<String>();
while (mt.find()) {
result.add(mt.group(1));
}
return result;
}
// 获得匹配的关系;
public static Matcher getMatcher(String content, String regex) {
if (!EmptyUtil.isNotEmpty(content))
return null;
Pattern pt = Pattern.compile(regex, Pattern.CASE_INSENSITIVE
| Pattern.DOTALL);
Matcher mt = pt.matcher(content);
return mt;
}
/**
* 配置是否是数字
*
* @param content
* 内容
* @return 结果
*/
public static boolean IsNumber(String content) {
return getMatcher(content, "^d+").matches();
}
/**
* 根据正则表达式解析出内容
*
* @param content
* 内容
* @param regex
* 正则表达式
* @return 内容
*/
public static String getContentByRegex(String content, String regex) {
return getContentByRegex(content, regex, 1);
}
}
- Java开发Spring第一天
- 关于R安装中文分词包安装不上的问题install.packages("tm")
- dataguard备库的数据文件的迁移实战(r8笔记第24天)
- Hive的left join、left outer join和left semi join三者的区别
- 52. Socket Server 自定义协议的简单实现 | 厚土Go学习笔记
- dataguard备库的数据文件的迁移(r8笔记第22天)
- 46. 实现一个简单的网络爬虫 | 厚土Go学习笔记
- 45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记
- golang进度条
- 44. goroutine、channel、time的例子 | 厚土Go学习笔记
- AVL二叉树
- Golang:使用 httprouter 构建 API 服务器
- dataguard中需要注意的一些数据文件操作(r8笔记第21天)
- 42. select 的默认分支 | 厚土Go学习笔记
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 数据处理|数据框重铸
- Go mod 常见问题(持续更新)
- R In Action|创建数据集
- R语言进阶之生存分析
- R In Action |基本数据管理
- R|apply,tapply
- python中的基本运算
- 助力联邦——Pulsar在Angel PowerFL联邦学习平台中的应用
- 让数据跃然“图”上!腾讯位置服务数据可视化API正式发布
- 腾讯云 Serverless 衔接 Kafka 上下游数据流转实战
- Tensorflow 测试一段能运行在 GPU 的代码
- Tensorflow on HDFS 的实践
- MPI on Kubernetes
- Tensorflow Serving模型指向s3地址,Could not find base path?
- Python之turtle模块初体验