| org.apache.oro.text.regex.MatchResult
All known Subclasses: org.apache.oro.text.perl.Perl5Util, org.apache.oro.text.awk.AwkMatchResult, org.apache.oro.text.regex.Perl5MatchResult,
MatchResult | public interface MatchResult (Code) | | The MatchResult interface allows PatternMatcher implementors to return
results storing match information in whatever format they like, while
presenting a consistent way of accessing that information. However,
MatchResult implementations should strictly follow the behavior
described for the interface methods.
A MatchResult instance contains a pattern match and its saved groups.
You can access the entire match directly using the
MatchResult.group(int) method with an argument of 0,
or by the
MatchResult.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
MatchResult.beginOffset(int) and
MatchResult.endOffset(int) methods. The
MatchResult.begin(int) and
MatchResult.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));
}
}
version: @version@ since: 1.0 See Also: PatternMatcher |
Method Summary | |
public int | begin(int group) Parameters: group - The pattern subgroup. | public 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.
Parameters: group - The pattern subgroup. | public int | end(int group) Parameters: group - The pattern subgroup. | public 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.
Parameters: group - The pattern subgroup. | public String | group(int group) Returns the contents of the parenthesized subgroups of a match,
counting parentheses from left to right and starting from 1.
Group 0 always refers to the entire match. | public int | groups() The number of groups contained in the result. | public int | length() A convenience method returning the length of the entire match. | public String | toString() Returns the same as group(0). |
begin | public int begin(int group)(Code) | | Parameters: group - The pattern subgroup. The offset into group 0 of the first token in the indicatedpattern subgroup. If a group was never matched or doesnot exist, returns -1. Be aware that a group that matchesthe null string at the end of a match will have an offsetequal to the length of the string, so you shouldn't blindlyuse the offset to index an array or String. |
beginOffset | public int beginOffset(int group)(Code) | | Returns an offset marking the beginning of the pattern match
relative to the beginning of the input from which the match
was extracted.
Parameters: group - The pattern subgroup. The offset of the first token in the indicatedpattern subgroup. If a group was never matched or doesnot exist, returns -1. |
end | public int end(int group)(Code) | | Parameters: group - The pattern subgroup. Returns one plus the offset into group 0 of the last token inthe indicated pattern subgroup. If a group was never matchedor does not exist, returns -1. A group matching the nullstring will return its start offset. |
endOffset | public int endOffset(int group)(Code) | | Returns an offset marking the end of the pattern match
relative to the beginning of the input from which the match was
extracted.
Parameters: group - The pattern subgroup. Returns one plus the offset of the last token inthe indicated pattern subgroup. If a group was never matchedor does not exist, returns -1. A group matching the nullstring will return its start offset. |
group | public String group(int group)(Code) | | Returns the contents of the parenthesized subgroups of a match,
counting parentheses from left to right and starting from 1.
Group 0 always refers to the entire match. For example, if the
pattern 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.
Parameters: group - The pattern subgroup to return. A string containing the indicated pattern subgroup. Group0 always refers to the entire match. If a group was nevermatched, it returns null. This is not to be confused witha group matching the null string, which will return a Stringof length 0. |
groups | public int groups()(Code) | | The number of groups contained in the result. This numberincludes the 0th group. In other words, the result refersto the number of parenthesized subgroups plus the entire matchitself. |
length | public int length()(Code) | | A convenience method returning the length of the entire match.
If you want to get the length of a particular subgroup you should
use the
MatchResult.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();
The length of the match. |
toString | public String toString()(Code) | | Returns the same as group(0).
A string containing the entire match. |
|
|