专栏首页Java学习网Java中处理正则表达式的工具类——总有一个适合你

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("<", "&lt;").replaceAll(">", "&gt;")
.replaceAll(
"&lt;" + expelTag.replace("<", "").replace(">", "")
+ "&gt;", expelTag);
} else {
regex.append("<[^一-龥]+?>").append(
"|</[^一-龥]+?>");
sourceContent = sourceContent.replaceAll(regex.toString(), "")
.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
}
return sourceContent;
}
/**
* 替换所有标签
*
* @param content
* 内容
* @return 替换后的内容
*/
public static String ReplaceHTMLTagAll(String content) {
if (!EmptyUtil.isNotEmpty(content))
return "";
return content.replaceAll("<.+?>", "").replaceAll("<", "&lt;")
.replaceAll(">", "&gt;");
}
/**
* 根據正則運算式和下標得到解析后的內容
*
* @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学习网(javalearns),作者:javalearns

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java面试题系列之基础部分(四)——每天学5个问题

    Java基础部分学习的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法,这些都是最基...

    用户1289394
  • 在Java EE7框架中使用MongoDB

    中心点创建应用程序的执行在企业环境中,应用程序必须安全、便携和高可用性。它还必须能够与不同的系统交互,但可控的从一个最好的位置。JEE7合并是一个重要的框架的所...

    用户1289394
  • Java基础知识之Scanner类和String类学习,讲明白了,适合初学者

    1、Scanner 的概述和方法介绍 A:Scanner 的概述 B:Scanner 的构造方法原理 Scanner(InputStream source) S...

    用户1289394
  • 聊聊sharding-jdbc的MasterSlaveRouter

    incubator-shardingsphere-4.0.0-RC1/sharding-core/sharding-core-route/src/main/ja...

    codecraft
  • 聊聊sharding-jdbc的MasterSlaveRouter

    incubator-shardingsphere-4.0.0-RC1/sharding-core/sharding-core-route/src/main/ja...

    codecraft
  • 手撕前端面试代码题大全

    coder_koala
  • Spark2Streaming读非Kerberos环境的Kafka并写数据到Kudu

    在前面的文章Fayson介绍了在Kerberos环境下《Spark2Streaming读Kerberos环境的Kafka并写数据到Kudu》,本篇文章Fayso...

    Fayson
  • 老男孩Python全栈开发(92天全)视频教程 自学笔记03

    玩蛇的胖纸
  • Latke 快速上手指南

    欢迎投稿 黑客派作品 Latke 在设计原理上非常类似 Spring,是 Spring 的极简版,该文档适合 Java Web 应用 框架初学者 以及Latke...

    java达人
  • 通杀绝⼤多数交易平台的Tradingview Dom XSS漏洞分析

    本文主要是分析慢雾安全团队《⼀个通杀绝⼤多数交易平台的 XSS 0day 漏洞》.aspx),根据慢雾区匿名情报,通用 K 线展示 JS 库 TradingVi...

    FB客服

扫码关注云+社区

领取腾讯云代金券