Home Page
>
Essential Classes
>
Regular Expressions
Answers to Questions and Exercises:
Questions
- Question:
What are the three public classes in the
java.util.regex
package? Describe the purpose of each.
Answer:
Pattern instances are compiled representations
of regular expressions.
Matcher instances are engines that interpret
patterns and perform match operations against input strings.
PatternSyntaxException defines an unchecked
exception indicating a syntax error in a regular expression.
- Question:
Consider the string literal
"foo". What is the
start index? What is the end index? Explain what these numbers
mean.
Answer:
Each character in the string resides in its own cell. Index
positions point between cells. The string "foo"
starts at index 0 and ends at index 3, even though the characters
only occupy cells 0, 1, and 2.
- Question:
What is the difference between an ordinary character and a
metacharacter? Give an example of each.
Answer:
An ordinary character in a regular expression matches itself. A
metacharacter is a special character that affects the way a
pattern is matched. The letter A is an ordinary
character. The punctuation mark . is a metacharacter
that matches any single character.
- Question:
How do you force a metacharacter to act like an ordinary
character?
Answer:
There are two ways:
- Precede the metacharacter with a backslash
(
\);
- Enclose the metacharacter within the quote expressions,
\Q (at the beginning) and \E (at
the end).
- Question:
What do you call a set of characters enclosed in square
brackets? What is it for?
Answer:
This is a character class. It matches any single character that
is in the class of characters specified by the expression between
the brackets.
- Question:
Here are three predefined character classes:
\d,
\s, and \w. Describe each one, and
rewrite it using square brackets.
Answer:
\d |
Matches any digit. |
[0-9] |
\s |
Matches any white space character. |
[ \t\n-x0B\f\r] |
\w |
Matches any word character. |
[a-zA-Z_0-9] |
- Question:
For each of
\d, \s, and
\w, write two simple expressions that match
the opposite set of characters.
Answer:
\d |
\D |
[^\d] |
\s |
\S |
[^\s] |
\w |
\W |
[^\w] |
- Question:
Consider the regular expression
(dog){3}. Identify
the two subexpressions. What string does the expression match?
Answer:
The expression consists of a capturing group, (dog),
followed by a greedy quantifier {3}. It matches the
string "dogdogdog".
Exercises
- Exercise:
Use a backreference to write an expression that will match a
person's name only if that person's first name and last name are the same.
Solution:
([A-Z][a-zA-Z]*)\s\1