package org.ovirt.engine.core.compat; import com.google.gwt.regexp.shared.MatchResult; import com.google.gwt.regexp.shared.RegExp; /** * Replacement for System.Text.RegularExpressions.Regex */ public class Regex { public static boolean isMatch(String input, String pattern) { return isMatch(input, pattern, RegexOptions.None); } public static boolean isMatch(String input, String pattern, int options) { return new Regex(pattern, options).isMatch(input); } public static Match match(String input, String pattern) { return match(input, pattern, RegexOptions.None); } public static Match match(String input, String pattern, int options) { return new Regex(pattern, options).match(input); } public static String replace(String input, String pattern, String replacement) { return replace(input, pattern, replacement, RegexOptions.None); } public static String replace(String input, String pattern, String replacement, int options) { return new Regex(pattern, options).replace(input, replacement); } private final String pattern; private final RegExp impl; private final int options; public Regex(String pattern) { this(pattern, RegexOptions.None); } public Regex(String pattern, int options) { this.pattern = pattern; this.options = options; String flags = ""; if (this.isGlobal()) { flags += 'g'; } if (this.isIgnoreCase()) { flags += 'i'; } if (this.isMultiLine()) { flags += 'm'; } impl = RegExp.compile(pattern, flags); } public boolean isGlobal() { return (options & RegexOptions.Singleline) != 0; } public boolean isIgnoreCase() { return (options & RegexOptions.IgnoreCase) != 0; } public boolean isMatch(String input) { return impl.test(input); } public boolean isMultiLine() { return (options & RegexOptions.Multiline) != 0; } public Match match(String input) { MatchResult matchResult = impl.exec(input); return new Match(matchResult); } public String replace(String input, String replacement) { return impl.replace(input, replacement); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("RegExp [pattern="); builder.append(pattern); builder.append(", isGlobal()="); builder.append(isGlobal()); builder.append(", isIgnoreCase()="); builder.append(isIgnoreCase()); builder.append(", isMultiLine()="); builder.append(isMultiLine()); builder.append("]"); return builder.toString(); } }