パスワードを忘れた? アカウント作成
432099 journal

Katuragiの日記: 正規表現用クラス

日記 by Katuragi
久々に晒してみる。
いやぁ正規表現を複数使う必要があったもので作っちゃいました。
やっぱエラー制御しなければだよなぁ、うん。追々やるか(^^;

java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-141.3)
Java HotSpot(TM) Client VM (build 1.4.2-38, mixed mode)
-----Class本体-----
import java.util.regex.*;

/*
    正規表現を簡単に使うためのClass
    copyright by Katuragi Kei@BUNGA
    修正BSDライセンスで配布します
*/

public class RegexClass {
    private Pattern pattern;
    private Matcher matcher;

    // テスト用
    public static void main (String[] arg) {
        if (arg.length == 2) {
            RegexClass regex = new RegexClass();
            regex.setPattern(arg[0]);
            regex.setMatcher(arg[1]);
            System.out.println(regex.isMatch());
        }
    }

    // 初期化
    public RegexClass () {
    }

    // 引数付き初期化
    public RegexClass (String pattern, String matcher) {
        setPattern(pattern);
        setMatcher(matcher);
    }

    // Setter
    public void setPattern (String str) {
        this.pattern = Pattern.compile(str);
    }

    public void setMatcher (String str) {
        this.matcher = pattern.matcher(str);
    }

    // マッチの真偽を一度だけ返す
    public boolean isMatch () {
        return matcher.find();
    }

    // patternに()が使われている場合のユーティリティー
    // グループ個数を返す
    public int getMatchGroupCount () {
        return matcher.groupCount();
    }

    // 配列で返す
    public String[] getMatchArrayString () {
        String[] returnString = new String[matcher.groupCount()+1];
        for (int i=0; i<matcher.groupCount()+1; i++) {
            returnString[i] = matcher.group(i);
        }
        return returnString;
    }

    // index値で指定して返す
    public String getMatchStringAtIndex (int index) {
        String[] matchString = getMatchArrayString();
        return matchString[index];
    }
}

-----そのテスト用-----
class RegexClassTest {
    public static void main (String[] args) {
        RegexClass regex = new RegexClass("([0-9])([0-9])/([0-9])([0-9])", "01/23");
//        System.out.println("isMatch: " + regex.isMatch());
//        System.out.println("isMatch: " + regex.isMatch());
        if (regex.isMatch() == true) {
            System.out.println("直接呼び出し");
            for (int i=0; i<regex.getMatchGroupCount()+1; i++) {
                System.out.println(i + ": " + regex.getMatchStringAtIndex(i));
            }

            System.out.println("代入呼び出し");
            String[] matchString = regex.getMatchArrayString();
            for (int j=0; j<matchString.length; j++) {
                System.out.println(j + ": " + matchString[j]);
            }
        } else {
            System.out.println("Matchはありません");
        }
    }
}
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...