Difference between revisions of "Pattern Matching"
From Suhrid.net Wiki
Jump to navigationJump to search| Line 1: | Line 1: | ||
| + | == Intro == | ||
| + | |||
* Classes in the java.util.regex package provide regular expressions support. | * Classes in the java.util.regex package provide regular expressions support. | ||
* Basic example | * Basic example | ||
| Line 55: | Line 57: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | == Metacharacters == | ||
| + | |||
| + | * Regex keywords that have special search meaning. | ||
| + | * \d - Matches a digit | ||
| + | * \s - Matches a whitespace char | ||
| + | * \w - Matches a word char (letters/digits or _) | ||
| + | |||
| + | <syntaxhighlight lang="java5"> | ||
| + | |||
| + | public class RegexTest3 { | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | |||
| + | Pattern p = Pattern.compile("\\d"); | ||
| + | Matcher m = p.matcher("The 15th of August"); | ||
| + | boolean found = false; | ||
| + | while(m.find()) { | ||
| + | System.out.println("Match found; starting at pos : " + m.start()); | ||
| + | found = true; | ||
| + | } | ||
| + | |||
| + | // Match found; starting at pos : 4 | ||
| + | // Match found; starting at pos : 5 | ||
| + | |||
| + | if(!found) { | ||
| + | System.out.println("No match found"); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | </syntaxhighlight> | ||
[[Category:OCPJP]] | [[Category:OCPJP]] | ||
Revision as of 08:13, 4 July 2011
Intro
- Classes in the java.util.regex package provide regular expressions support.
- Basic example
import java.util.regex.*;
public class RegexTest1 {
public static void main(String[] args) {
Pattern p = Pattern.compile("lazy"); //The pattern to search for
Matcher m = p.matcher("The quick brown fox jumps over the lazy dog"); //The source against which to match the pattern
boolean found = false;
while(m.find()) {
System.out.println("Match found at " + m.start() + "," + m.end()); //Will print : Match found at 35,39
found = true;
}
if(!found) {
System.out.println("No match found");
}
}
}
- Thumb rule: Regex matching runs from left to right and once a source character has been consumed, it cannot be reused.
- In the below example, it will match the pattern "aba" starting at 0 and 4, but not at 2 since they are consumed during the match starting from 0.
import java.util.regex.*;
public class RegexTest2 {
public static void main(String[] args) {
Pattern p = Pattern.compile("aba");
Matcher m = p.matcher("abababa");
boolean found = false;
while(m.find()) {
System.out.println("Match found; starting at pos : " + m.start());
found = true;
}
if(!found) {
System.out.println("No match found");
}
}
}
Metacharacters
- Regex keywords that have special search meaning.
- \d - Matches a digit
- \s - Matches a whitespace char
- \w - Matches a word char (letters/digits or _)
public class RegexTest3 {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher("The 15th of August");
boolean found = false;
while(m.find()) {
System.out.println("Match found; starting at pos : " + m.start());
found = true;
}
// Match found; starting at pos : 4
// Match found; starting at pos : 5
if(!found) {
System.out.println("No match found");
}
}
}