RegexUtils

とりあえず作成。Java5ではも少し便利なクラスって用意されているのかなぁ?


package foo;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexUtils {

private static Map patterns = new HashMap();

private static Pattern getPattern(String regex) {
return getPattern(regex, 0);
}

private static Pattern getPattern(String regex, int i_flags) {
Map patterns_par_regex = (Map) patterns.get(regex);

if (patterns_par_regex == null) {
patterns_par_regex = new HashMap();
patterns.put(regex, patterns_par_regex);
}

Integer flags = new Integer(i_flags);
Pattern pattern = (Pattern) patterns_par_regex.get(flags);

if (pattern == null) {
pattern = Pattern.compile(regex, i_flags);
patterns_par_regex.put(flags, pattern);
}

return pattern;
}

/////////////////////////////////////////////////////////////////

public static Matcher matcher(String regex, CharSequence input) {
Pattern pattern = getPattern(regex);
return pattern.matcher(input);
}

public static Matcher matcher(String regex, int flags, CharSequence input) {
Pattern pattern = getPattern(regex, flags);
return pattern.matcher(input);
}

public static boolean matches(String regex, CharSequence input) {
Pattern pattern = getPattern(regex);
return pattern.matcher(input).matches();
}

public static boolean matches(String regex, int flags, CharSequence input) {
Pattern pattern = getPattern(regex, flags);
return pattern.matcher(input).matches();
}

public static String split(String regex, CharSequence input) {
Pattern pattern = getPattern(regex);
return pattern.split(input);
}

public static String split(String regex, int flags, CharSequence input) {
Pattern pattern = getPattern(regex, flags);
return pattern.split(input);
}

public static String split(String regex, CharSequence input, int limit) {
Pattern pattern = getPattern(regex);
return pattern.split(input, limit);
}

public static String split(String regex, int flags, CharSequence input, int limit) {
Pattern pattern = getPattern(regex, flags);
return pattern.split(input, limit);
}

public static boolean lookingAt(String regex, CharSequence input) {
Pattern pattern = getPattern(regex);
return pattern.matcher(input).lookingAt();
}

public static boolean lookingAt(String regex, int flags, CharSequence input) {
Pattern pattern = getPattern(regex, flags);
return pattern.matcher(input).lookingAt();
}

public static String replaceAll(String regex, CharSequence input, String replacement) {
Pattern pattern = getPattern(regex);
return pattern.matcher(input).replaceAll(replacement);
}

public static String replaceAll(String regex, int flags, CharSequence input, String replacement) {
Pattern pattern = getPattern(regex, flags);
return pattern.matcher(input).replaceAll(replacement);
}

public static String replaceFirst(String regex, CharSequence input, String replacement) {
Pattern pattern = getPattern(regex);
return pattern.matcher(input).replaceAll(replacement);
}

public static String replaceFirst(String regex, int flags, CharSequence input, String replacement) {
Pattern pattern = getPattern(regex, flags);
return pattern.matcher(input).replaceAll(replacement);
}

}