001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018:
019: package org.apache.tools.ant.util.regexp;
020:
021: import java.util.Vector;
022: import org.apache.tools.ant.BuildException;
023:
024: /**
025: * Interface describing a regular expression matcher.
026: *
027: */
028: public interface RegexpMatcher {
029:
030: /***
031: * Default Mask (case insensitive, neither multiline nor
032: * singleline specified).
033: */
034: int MATCH_DEFAULT = 0x00000000;
035:
036: /***
037: * Perform a case insenstive match
038: */
039: int MATCH_CASE_INSENSITIVE = 0x00000100;
040:
041: /***
042: * Treat the input as a multiline input
043: */
044: int MATCH_MULTILINE = 0x00001000;
045:
046: /***
047: * Treat the input as singleline input ('.' matches newline)
048: */
049: int MATCH_SINGLELINE = 0x00010000;
050:
051: /**
052: * Set the regexp pattern from the String description.
053: * @param pattern the pattern to match
054: * @throws BuildException on error
055: */
056: void setPattern(String pattern) throws BuildException;
057:
058: /**
059: * Get a String representation of the regexp pattern
060: * @return the pattern
061: * @throws BuildException on error
062: */
063: String getPattern() throws BuildException;
064:
065: /**
066: * Does the given argument match the pattern?
067: * @param argument the string to match against
068: * @return true if the pattern matches
069: * @throws BuildException on error
070: */
071: boolean matches(String argument) throws BuildException;
072:
073: /**
074: * Returns a Vector of matched groups found in the argument
075: * using default options.
076: *
077: * <p>Group 0 will be the full match, the rest are the
078: * parenthesized subexpressions</p>.
079: *
080: * @param argument the string to match against
081: * @return the vector of groups
082: * @throws BuildException on error
083: */
084: Vector getGroups(String argument) throws BuildException;
085:
086: /***
087: * Does this regular expression match the input, given
088: * certain options
089: * @param input The string to check for a match
090: * @param options The list of options for the match. See the
091: * MATCH_ constants above.
092: * @return true if the pattern matches
093: * @throws BuildException on error
094: */
095: boolean matches(String input, int options) throws BuildException;
096:
097: /***
098: * Get the match groups from this regular expression. The return
099: * type of the elements is always String.
100: * @param input The string to check for a match
101: * @param options The list of options for the match. See the
102: * MATCH_ constants above.
103: * @return the vector of groups
104: * @throws BuildException on error
105: */
106: Vector getGroups(String input, int options) throws BuildException;
107:
108: }
|