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("<", "&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);
}
}