Java中Pattern類的quote方法將任何字符串(包括正則表達式)都轉換成字符串常量,不具有任何匹配功能。
下面是個例子:
import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; public class TestPattern { @Test public void testQuote(){ List<String> stringList = new ArrayList<>(); stringList.add("Hi123HitianHiyan"); stringList.add("Hiaaa"); stringList.add("aaa"); stringList.add("Hi\\/*"); stringList.add("Hi\\w*123"); stringList.add("Hi\\w*"); final String patternString = "Hi\\w*"; //根據patternString正則表達式匹配數組 System.out.println("---patternString---"); for (String string : stringList){ if(Pattern.matches(patternString, string)){ System.out.println(string); } } System.out.println("---quote---"); String quote = Pattern.quote(patternString); System.out.println("patternString:"+quote); for (String string : stringList){ if(Pattern.matches(quote, string)){ System.out.println(string); } } } }
執行之后,結果如下:
可以看到,正則表達式"Hi\\w*"匹配以"Hi"開頭的后面任意個數字、字母、下划線、漢字;
然后使用了Pattern.quote("Hi\\w*")后,該方法的返回值就是"\QHi\\w*\E",這就是表示一個字符串常量"Hi\\w*",不具有原來正則表達式的功能,只匹配該字符串常量。
場景
接口接收一個參數name,模糊查詢時只想要匹配name的字符串,這是接收到這個參數就可以使用name = Pattern.quote(name),用處理后的name去查詢。