开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用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替换文本中所有的正则符号 Java问题通用解决代码的更多相关文章

  1. java替换文件中某一行文本的内容

    个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下 package com.wenhaofan.common.kit; impor ...

  2. 如何使用JS脚本从HTML中分离图片标签与文本,替换文本中指定的内容并加粗(原创)

    var html='ddfsdfsdfdsd dfsdfsdffds<img _src="http://localhost:8490/60E86EA7-FE7B-44BF-8270-4 ...

  3. Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决

    今天学习java的接口,在linux的命令行下写代码练练手吧,啪啪啪一顿猛敲,写了一个接口UsbInserface,UDisk继承UsbInterface,写完了那就编译到bin目录呗. 当时写程序的 ...

  4. php 通过 strtr 方法来替换文本中指定的内容

    通过在文本中指定待替换的内容,如: [{name}] [{age}] 格式可以自己定义, 大概过程: 在文本中定义需要替换的文本内容: 以键值对的方式 组织数据(数组): 用 file_get_con ...

  5. linux中批量替换文本中字符串--转载

    (一)通过vi编辑器来替换.vi/vim 中可以使用 :s 命令来替换字符串.:s/well/good/ 替换当前行第一个 well 为 good:s/well/good/g 替换当前行所有 well ...

  6. 【Linux】替换文本中的字符

    替换单个文本中的字符,有两种方法,如下详解 VIM替换 打开文件 vim test.txt 替换 :%s/原字符串/替换字符串/gg 直接替换 sed -i 's/原字符串/替换字符串/g' `ls ...

  7. java统计文本中单词出现的个数

    package com.java_Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; imp ...

  8. Java 在Word中创建多级项目符号列表和编号列表

    本文分享通过Java程序代码在Word中创建多级项目符号列表和编号列表的方法.程序运行环境如下: IntelliJ IDEA 2018(JDK 1.8.0) Word 2013 Word Jar包:F ...

  9. Java 替换PDF中的字体

    文档中可通过应用不同的字体来呈现不一样的视觉效果,通过字体来实现文档布局.排版等设计需要.应用字体时,可在创建文档时指定字体,也可以用新字体去替换文档中已有的字体.下面,以Java代码展示如何来替换P ...

随机推荐

  1. MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]

    修改 <update id="updateStatusById" parameterType="java.lang.Integer"> update ...

  2. 鸭子-策略模式(Strategy)

    前言 万事开头难,最近对这句话体会深刻!这篇文章是这个系列正式开始介绍设计模式的第一篇,所以肩负着确定这个系列风格的历史重任,它在我脑袋里默默地酝酿了好多天,却只搜刮出了一点儿不太清晰的轮廓,可是时间 ...

  3. ORA-01940: cannot drop a user that is currently connected

    https://www.cnblogs.com/lwlxqlccc/p/8694696.html

  4. Oracle高级函数

    http://www.cnblogs.com/chen1388/archive/2010/07/06/1771919.html decode函数: decode(aa, 1, 'xs', 2, 'ps ...

  5. (10)ERStudio

     1.外键 https://jingyan.baidu.com/article/f79b7cb37e9d219144023ea6.html 第一个图标:Identifying Relationship ...

  6. codeforces-526B

    题目连接:http://codeforces.com/contest/526/problem/B B. Om Nom and Dark Park time limit per test 1 secon ...

  7. [Beijing2010组队]次小生成树Tree

    小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小 ...

  8. 数论day1 —— 基础知识(们)

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=61632537 向大(hei)佬(e)势力学(di ...

  9. 八. 输入输出(IO)操作1.输入输出基本概念

    输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作.几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等.通过输入和输出操作可以从外界接收信息, ...

  10. hash算法散列算法

    Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是 ...