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はありません");
}
}
}
いやぁ正規表現を複数使う必要があったもので作っちゃいました。
やっぱエラー制御しなければだよなぁ、うん。追々やるか(^^;
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はありません");
}
}
}
正規表現用クラス More ログイン