首页 > 代码库 > java替换文本中所有的正则符号
java替换文本中所有的正则符号
开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用split分割方法分割文本的话无效,想到用替换来做,全部替换正则符号为转义后的符号
贴java实现代码:
1.测试版
public static void main(String[] args) {
String[] symbols = new String[] { "\\\\", "\\/", "\\[", "\\]", "\\(", "\\)", "\\{", "\\}", "\\?", "\\+", "\\*", "\\|", "\\.", "\\^", "\\$", "\\-", "\\^" };
String text = "adasdasd|||adasdasd|||adasdasd|||adasdasd---aa";
String delimiter = "---";
// for (char c : text.toCharArray()) {
// if(symbols.)
// }
long t1 = System.currentTimeMillis();
for (String s : symbols) {
// text = text.replaceAll(s, "\\" + s);
// text = Pattern.compile(text).matcher(s).replaceAll("\\" + s);
// System.out.println(Pattern.compile(text, Pattern.LITERAL).matcher(s).find());
// text.replace(s, "\\" + s);
// System.out.println(delimiter.indexOf(s) != -1);
// if (delimiter.indexOf(s) != -1) {
// replaceAll方法用的是正则匹配,replace不是
delimiter = delimiter.replaceAll(s, "\\" + s);
// }
}
long t2 = System.currentTimeMillis();
System.out.format("%s\n耗时:%s", text, t2 - t1);
// split方法用的是正则匹配
String[] split = text.split(delimiter);
System.out.println(split.length);
}
2.正式版
/**
* 转义所有的正则符号
*
* @param s
* 文本
* @return 转义后的文本
*/
public static String escapeRegex(String s) {
String[] symbols = new String[] { "\\\\", "\\/", "\\[", "\\]", "\\(", "\\)", "\\{", "\\}", "\\?", "\\+", "\\*", "\\|", "\\.", "\\^", "\\$", "\\-", "\\^" };
// String text = "adasdasd|||adasdasd|||adasdasd|||adasdasd---aa";
// String delimiter = s;
if (s != null) {
for (String sym : symbols) {
s = s.replaceAll(sym, "\\" + sym);
}
}
return s;
}
java替换文本中所有的正则符号
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。