Here you can find the source of escapeRegexChars(String str, char... ignores)
public static final String escapeRegexChars(String str, char... ignores)
//package com.java2s; /*/* w ww .j av a 2 s .c o m*/ * Copyright Bruce Liang (ldcsaa@gmail.com) * * Version : Log-Cutter 2.0.2 * Author : Bruce Liang * Website : http://www.jessma.org * Project : https://github.com/ldcsaa * Blog : http://www.cnblogs.com/ldcsaa * WeiBo : http://weibo.com/u/1402935851 * QQ Group : 75375912 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Main { public static final String escapeRegexChars(String str, char... ignores) { final char ESCAPE_CHAR = '\\'; final char[] REGEX_CHARS = { '.', ',', '?', '+', '-', '*', '^', '$', '|', '&', '{', '}', '[', ']', '(', ')', '\\' }; char[] regex_chars = REGEX_CHARS; if (ignores.length > 0) { Set<Character> cs = new HashSet<Character>(REGEX_CHARS.length); for (int i = 0; i < REGEX_CHARS.length; i++) cs.add(REGEX_CHARS[i]); for (int i = 0; i < ignores.length; i++) cs.remove(ignores[i]); int i = 0; regex_chars = new char[cs.size()]; Iterator<Character> it = cs.iterator(); while (it.hasNext()) regex_chars[i++] = it.next(); } StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); for (int j = 0; j < regex_chars.length; j++) { if (c == regex_chars[j]) { sb.append(ESCAPE_CHAR); break; } } sb.append(c); } return sb.toString(); } }