What is the use of Pattern.quote method?
java, pattern-matching, regex
Solution
`\Q` means "start of literal text" (i.e. regex "open quote") `\E` means "end of literal text" (i.e. regex "close quote")
Calling the `Pattern.quote()` method wraps the string in `\Q...\E`, which turns the text is into a regex literal. For example, `Pattern.quote(".*")` would match a dot and then an asterisk:
System.out.println("foo".matches(".*")); // true
System.out.println("foo".matches(Pattern.quote(".*"))); // false
System.out.println(".*".matches(Pattern.quote(".*"))); // true
The method's purpose is to not require the programmer to have to remember the special terms `\Q` and `\E` and to add a bit of readability to the code - regex is hard enough to read already. Compare:
someString.matches(Pattern.quote(someLiteral));
someString.matches("\\Q" + someLiteral + "\\E"));
Referring to the javadoc:
Returns a literal pattern String for the specified String.
This method produces a String that can be used to create a Pattern that would match the string s as if it were a literal pattern.
Metacharacters or escape sequences in the input sequence will be given no special meaning.
Problem
I'm trying to understand `Pattern.quote` using the following code: ``` String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545"); System.out.println("Pattern is : "+pattern); ``` produces the output: ``` Pattern is : \Q1252343% 8 567 hdfg gf^$545\E ``` What are `\Q` and `\E` here? The documentation description says : Returns a literal pattern `String` for the specified `String`. This method produces a `String` that can be used to create a `Pattern` that would match the string `s` as if it were a literal pattern. Metacharacters or escape sequences in the input sequence will be given no special meaning. But `Pattern.quote`'s return type is `String` and not a compiled `Pattern` object. Why is this method required and what are some usage examples?