![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e427. Greedy and Nongreedy Matching in a Regular ExpressionBy default, pattern matching is greedy, which means that the matcher returns the longest match possible. For example, applying the patternA.*c to AbcAbcA matches AbcAbc rather than the shorter
Abc . To do nongreedy matching, a question mark must be added to
the quantifier. For example, the pattern A.*?c will find the
shortest match possible.
// Greedy quantifiers String match = find("A.*c", "AbcAbc"); // AbcAbc match = find("A.+", "AbcAbc"); // AbcAbc // Nongreedy quantifiers match = find("A.*?c", "AbcAbc"); // Abc match = find("A.+?", "AbcAbc"); // Abc // Returns the first substring in input that matches the pattern. // Returns null if no match found. public static String find(String patternStr, CharSequence input) { Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(input); if (matcher.find()) { return matcher.group(); } return null; }
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 e428. Escaping Special Characters in a Pattern
© 2002 Addison-Wesley. |