package arkref.parsestuff;
import java.util.*;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
public class RegexUtil {
public static class R {
public static String or(String[] disjuncts) {
return "(?:" + StringUtils.join(disjuncts, "|") + ")";
}
public static String or(Collection<String> disjuncts) {
return or(disjuncts.toArray(new String[0]));
}
public static String ahead(String pat) { return "(?=" + pat + ")"; }
public static String notAhead(String pat) { return "(?!" + pat + ")"; }
public static String behind(String pat) { return "(?<=" + pat + ")"; }
public static String notBehind(String pat) { return "(?<!" + pat + ")"; }
public static String quote(String str) { return Pattern.quote(str); }
/** non-capturing group **/
public static String ncGroup(String pat) { return "(?:" + pat + ")"; }
/** capturing group **/
public static String cGroup(String pat) { return "(" + pat + ")"; }
public static String optional(String pat) { return ncGroup(pat) + "?"; }
/** only use on greedy optional() etc. quantifiers, modify them to become reluctant **/
public static String reluc(String pat) { return pat+"?"; }
/////////////////////
public static String[] quote(String[] strs) {
String[] ret = new String[strs.length];
for(int i=0; i<strs.length; i++) ret[i] = quote(strs[i]);
return ret;
}
}
public static void main(String[] args) {
String[] d = new String[]{ "a", "b", "c" };
U.pl(R.or(d));
Set<String> ds = new HashSet();
ds.add("a"); ds.add("b"); ds.add("c");
U.pl(R.or(ds));
}
}