とりあえず作成。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);
}}