私は次のコードを使用してPattern.quote
を理解しようとしています: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
はここ\Q
と\E
何ですか?ドキュメントの説明:
String
のリテラルパターンString
を返します。
String
このメソッドは、文字列s
の文字列と同じようにPattern
を作成するために使用することができるString
を生成します。入力シーケンスのメタキャラクタまたはエスケープシーケンスには特別な意味はありません。
しかしPattern.quote
の戻り値の型はString
なくコンパイルPattern
オブジェクトです。
この方法が必要な理由と使用例は何ですか?
'someString.matches(Pattern.quote(someLiteral)) 'に相当するのは、実際には' someString.matches( "\\ Q" + someLiteral.replace( "\\ E"、 "\\ E \\\ \ E \\ Q ")+" \\ E ")' – kbolino
@kbolino Rofl。そして、 "\\ Q"の置き換えはどうですか? – Andrew
@Andrewそれもそれを扱います: '' \\ Q \\ E ".matches(Pattern.quote(" \\ Q \\ E "))// true'。 – Bohemian