Próbuję zrozumieć Pattern.quote
stosując następujący kod:Jaka jest metoda Pattern.quote?
String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545");
System.out.println("Pattern is : "+pattern);
produkuje wyjście:
Pattern is : \Q1252343% 8 567 hdfg gf^$545\E
Jakie są \Q
i \E
tutaj? W opisie dokumentacji podano:
Powoduje podanie literalnego wzorca
String
dla określonegoString
.Ta metoda umożliwia utworzenie
String
, która może być użyta do utworzeniaPattern
, która byłaby zgodna z ciągiems
, tak jakby był literalnym wzorcem.Metaznakom lub sekwencjom unikatowym w sekwencji wejściowej nie nadano specjalnego znaczenia.
Ale Pattern.quote
„s typ zwracany jest String
a nie skompilowany Pattern
przedmiot.
Dlaczego ta metoda jest wymagana i jakie są przykłady użycia?
Poprawnym odpowiednikiem 'someString.matches (Pattern.quote (someLiteral))' jest w rzeczywistości 'someString.matches (" \\ Q "+ someLiteral.replace (" \\ E "," \\ E \\\ \ E \\ Q ") +" \\ E ")' – kbolino
@kbolino Rofl. A co z zastępowaniem "\\ Q"? – Andrew
@Andrew To również obsługuje: '" \\ Q \\ E ".match (Pattern.quote (" \\ Q \\ E ")) // true'. – Bohemian