前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中处理正则表达式的工具类——总有一个适合你

Java中处理正则表达式的工具类——总有一个适合你

作者头像
用户1289394
发布2018-02-27 15:06:02
1.5K0
发布2018-02-27 15:06:02
举报
文章被收录于专栏:Java学习网
代码语言:js
复制

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);
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档