• 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 耗时:%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;
          }

     
     
     
     
  • 相关阅读:
    增加/删除新用户并添加root权限
    LINUX学习之路-1
    了解参考基因组及注释信息
    RNA-seq操作实战
    如何利用数据库下载参考基因组
    RNA-Seq比对软件HISAT2的用法
    小白-批量下载SRR数据
    sratoolkit 的使用
    批量查看QC结果的工具----multiqc
    fastQC 质控结果解读
  • 原文地址:https://www.cnblogs.com/svennee/p/4082818.html
Copyright © 2020-2023  润新知