--- a/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Tue Dec 24 00:12:53 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Tue Dec 24 00:15:04 2013 +0100
@@ -133,4 +133,29 @@
Arrays.fill(array, ch);
return new String(array);
}
+
+ /**
+ * @param original any text
+ * @return escaped text that can be used as part of an regular expression, matches the original
+ * text
+ */
+ public static String escapeRegEx(String original) {
+ StringBuilder escaped = new StringBuilder(original.length() * 3);
+
+ escaped.append("\\Q"); // start quotation
+ for (int i = 0; i < original.length(); i++) {
+ char ch = original.charAt(i);
+ if (ch == 'E' && i > 0 && original.charAt(i - 1) == '\\') {
+ escaped.append(ch); // this unintentionally ends quotation
+ escaped.append("\\\\E"); // insert escaped \E (eaten before)
+ escaped.append("\\Q"); // re-start quotation
+ } else {
+ escaped.append(ch);
+ }
+
+ }
+ escaped.append("\\E"); // end quotation
+
+ return escaped.toString();
+ }
}