You learned that all the special metacharacters, such as *, +, ?, ., |, (, ), [, {, ^, $, and so on, need to be escaped if the intent is to match them literally. I often see cases where programmers leave them unescaped, thus giving a totally different meaning to the regular expression. The Java regex API that we discussed in Chapter 5, Introduction to Java Regular Expressions APIs - Pattern and Matcher Classes, throws a non-checked exception if a regex pattern is wrongly formatted and cannot be compiled.