Java正則表達式Pattern.quote()方法詳解

使用示例

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(使給定的正則表達式沒有任何的特殊意義)

發佈了41 篇原創文章 · 獲贊 89 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章