The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.util.regex  [26 examples]

e428. Escaping Special Characters in a Pattern

Any nonalphanumeric character can be escaped with a backslash to remove it's special meaning (if any). This example implements a method that escapes all nonalphanumeric characters. This method is useful when the pattern is retrieved programmatically and it is necessary to search for the pattern literally.

Another method of escaping the characters in a pattern is to surround the pattern with \Q and \E. The only thing to watch out for is the presence of \E in the pattern, which would end the escaping of the pattern.

    String patternStr = "i.e.";
    
    boolean matchFound = Pattern.matches(patternStr, "i.e.");// true
    matchFound = Pattern.matches(patternStr, "ibex");        // true
    
    // Quote the pattern; i.e. surround with \Q and \E
    matchFound = Pattern.matches("\\Q"+patternStr+"\\E", "i.e.");  // true
    matchFound = Pattern.matches("\\Q"+patternStr+"\\E", "ibex");  // false
    
    // Escape the pattern
    patternStr = escapeRE(patternStr);                       // i\.e\.
    
    matchFound = Pattern.matches(patternStr, "i.e.");        // true
    matchFound = Pattern.matches(patternStr, "ibex");        // false
    
    // Returns a pattern where all punctuation characters are escaped.
    static Pattern escaper = Pattern.compile("([^a-zA-z0-9])");
    public static String escapeRE(String str) {
        return escaper.matcher(str).replaceAll("\\\\$1");
    }

 Related Examples
e423. Quintessential Regular Expression Search Program
e424. Determining If a String Matches a Pattern Exactly
e425. Applying Regular Expressions on the Contents of a File
e426. Removing Duplicate Whitespace in a String
e427. Greedy and Nongreedy Matching in a Regular Expression

See also: Flags    Groups    Lines    Paragraphs    Searching and Replacing    Tokenizing   


© 2002 Addison-Wesley.