Difference between revisions of "Pattern Matching"
From Suhrid.net Wiki
Jump to navigationJump to searchLine 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 09: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");
}
}
}