使用示例
String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545");
System.out.println("Pattern is : "+pattern);
輸出結果爲
Pattern is : \Q1252343% 8 567 hdfg gf^$545\E
方法解釋
在使用quote()方法之後,原有的字符串s變成了\Qs\E的樣式,那麼\Q和\E代表什麼意思呢?
- \Q 代表字面內容的開始
- \E 代表字面內容的結束
也就是說,調用Patter.quote()方法之後,原有的字符串被\Q..\E包裹,返回後的字符串成了正則字面量.舉個例子,正則表達式”.*”表示匹配除“\n”之外的任何字符多次.
Pattern pattern = Pattern.compile(".*");
Matcher matcher = pattern.matcher("123");
boolean matches = matcher.matches();//true
System.out.println(matches);
matcher = pattern.matcher("foo");
matches = matcher.matches();//true
System.out.println(matches);
而使用quote()方法,可以把正則表達式”.*”轉換爲它的字面量,請看下例
String regex = Pattern.quote(".*");
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("123");
boolean match = matcher.matches();// false
System.out.println(match);
matcher = pattern.matcher("foo");// false
System.out.println(match);
matcher = pattern.matcher(".*");
match = matcher.matches();// true
System.out.println(match);
通過上面例子就可以看出,當使用quote()方法後,將”.*”轉換爲了它的字面量意思,也就是隻能匹配”.*”字符串.用API裏面的一句話解釋就是Metacharacters or escape sequences in the input sequence will be given no special meaning(使給定的正則表達式沒有任何的特殊意義)