public interface MatchResult
A MatchResult instance contains a pattern match and its saved groups.
You can access the entire match directly using the
group(int)
method with an argument of 0,
or by the toString()
method which is
defined to return the same thing. It is also possible to obtain
the beginning and ending offsets of a match relative to the input
producing the match by using the
beginOffset(int)
and endOffset(int)
methods. The
begin(int)
and end(int)
are useful in some
circumstances and return the begin and end offsets of the subgroups
of a match relative to the beginning of the match.
You might use a MatchResult as follows:
int groups; PatternMatcher matcher; PatternCompiler compiler; Pattern pattern; PatternMatcherInput input; MatchResult result; compiler = new Perl5Compiler(); matcher = new Perl5Matcher(); try { pattern = compiler.compile(somePatternString); } catch(MalformedPatternException e) { System.out.println("Bad pattern."); System.out.println(e.getMessage()); return; } input = new PatternMatcherInput(someStringInput); while(matcher.contains(input, pattern)) { result = matcher.getMatch(); // Perform whatever processing on the result you want. // Here we just print out all its elements to show how its // methods are used. System.out.println("Match: " + result.toString()); System.out.println("Length: " + result.length()); groups = result.groups(); System.out.println("Groups: " + groups); System.out.println("Begin offset: " + result.beginOffset(0)); System.out.println("End offset: " + result.endOffset(0)); System.out.println("Saved Groups: "); // Start at 1 because we just printed out group 0 for(int group = 1; group < groups; group++) { System.out.println(group + ": " + result.group(group)); System.out.println("Begin: " + result.begin(group)); System.out.println("End: " + result.end(group)); } }
PatternMatcher
Modifier and Type | Method and Description |
---|---|
int |
begin(int group) |
int |
beginOffset(int group)
Returns an offset marking the beginning of the pattern match
relative to the beginning of the input from which the match
was extracted.
|
int |
end(int group) |
int |
endOffset(int group)
Returns an offset marking the end of the pattern match
relative to the beginning of the input from which the match was
extracted.
|
java.lang.String |
group(int group)
Returns the contents of the parenthesized subgroups of a match,
counting parentheses from left to right and starting from 1.
|
int |
groups() |
int |
length()
A convenience method returning the length of the entire match.
|
java.lang.String |
toString()
Returns the same as group(0).
|
int length()
group(int)
method to get
the string and then access its length() method as follows:
int length = -1; // Use -1 to indicate group doesn't exist MatchResult result; String subgroup; // Initialization of result omitted subgroup = result.group(1); if(subgroup != null) length = subgroup.length();
The length() method serves as a more a more efficient way to do:
length = result.group(0).length();
int groups()
java.lang.String group(int group)
foo(\d+)
is used to extract a match
from the input abfoo123
, then group(0)
will return foo123
and group(1)
will return
123
. group(2)
will return
null
because there is only one subgroup in the original
pattern.
group
- The pattern subgroup to return.int begin(int group)
group
- The pattern subgroup.int end(int group)
group
- The pattern subgroup.int beginOffset(int group)
group
- The pattern subgroup.int endOffset(int group)
group
- The pattern subgroup.java.lang.String toString()
toString
in class java.lang.Object
Copyright ? 2000-2003 Apache Software Foundation. All Rights Reserved.