regexftpfileentryparserimpl.java

来自「apache推出的net包」· Java 代码 · 共 163 行

JAVA
163
字号
/* * Copyright 2004-2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.net.ftp.parser;import org.apache.commons.net.ftp.FTPFileEntryParserImpl;import org.apache.oro.text.regex.MalformedPatternException;import org.apache.oro.text.regex.MatchResult;import org.apache.oro.text.regex.Pattern;import org.apache.oro.text.regex.PatternMatcher;import org.apache.oro.text.regex.Perl5Compiler;import org.apache.oro.text.regex.Perl5Matcher;/** * This abstract class implements both the older FTPFileListParser and * newer FTPFileEntryParser interfaces with default functionality. * All the classes in the parser subpackage inherit from this. * * This is the base for all regular based FTPFileEntryParser * * @author Steve Cohen <scohen@apache.org> */public abstract class RegexFTPFileEntryParserImpl extends FTPFileEntryParserImpl{    /**     * internal pattern the matcher tries to match, representing a file     * entry     */    private Pattern pattern = null;    /**     * internal match result used by the parser     */    private MatchResult result = null;    /**     * Internal PatternMatcher object used by the parser.  It has protected     * scope in case subclasses want to make use of it for their own purposes.     */    protected PatternMatcher _matcher_ = null;    /**     * The constructor for a RegexFTPFileEntryParserImpl object.     *     * @param regex  The regular expression with which this object is     * initialized.     *     * @exception IllegalArgumentException     * Thrown if the regular expression is unparseable.  Should not be seen in     * normal conditions.  It it is seen, this is a sign that a subclass has     * been created with a bad regular expression.   Since the parser must be     * created before use, this means that any bad parser subclasses created     * from this will bomb very quickly,  leading to easy detection.     */    public RegexFTPFileEntryParserImpl(String regex)    {        super();        try        {            _matcher_ = new Perl5Matcher();            pattern   = new Perl5Compiler().compile(regex);        }        catch (MalformedPatternException e)        {            throw new IllegalArgumentException (               "Unparseable regex supplied:  " + regex);        }    }    /**     * Convenience method delegates to the internal MatchResult's matches()     * method.     *     * @param s the String to be matched     * @return true if s matches this object's regular expression.     */    public boolean matches(String s)    {        this.result = null;        if (_matcher_.matches(s.trim(), this.pattern))        {            this.result = _matcher_.getMatch();        }        return null != this.result;    }    /**     * Convenience method delegates to the internal MatchResult's groups()     * method.     *     * @return the number of groups() in the internal MatchResult.     */    public int getGroupCnt()    {        if (this.result == null)        {            return 0;        }        return this.result.groups();    }    /**     * Convenience method delegates to the internal MatchResult's group()     * method.     *     * @param matchnum match group number to be retrieved     *     * @return the content of the <code>matchnum'th<code> group of the internal     *         match or null if this method is called without a match having     *         been made.     */    public String group(int matchnum)    {        if (this.result == null)        {            return null;        }        return this.result.group(matchnum);    }    /**     * For debugging purposes - returns a string shows each match group by     * number.     *     * @return a string shows each match group by number.     */    public String getGroupsAsString()    {        StringBuffer b = new StringBuffer();        for (int i = 1; i <= this.result.groups(); i++)        {            b.append(i).append(") ").append(this.result.group(i))                .append(System.getProperty("line.separator"));        }        return b.toString();    }    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?