/** * Convert the given like pattern to a regex pattern * * @param expr expression to convert * @return converted expression */ public static Expression<String> likeToRegex(Expression<String> expr) { return likeToRegex(expr, true); }
private String regex(Expression<String> expr) { return ExpressionUtils.likeToRegex(expr).toString(); }
Operation<?> o = (Operation<?>) expr; if (o.getOperator() == Ops.CONCAT) { Expression<String> lhs = likeToRegex((Expression<String>) o.getArg(0), false); Expression<String> rhs = likeToRegex((Expression<String>) o.getArg(1), false); if (lhs != o.getArg(0) || rhs != o.getArg(1)) { return operation(String.class, Ops.CONCAT, lhs, rhs);
} else if (op == Ops.LIKE) { String regex = ExpressionUtils.likeToRegex((Expression) expr.getArg(1)).toString(); return asDocument(asDBKey(expr, 0), new BsonRegularExpression(regex)); } else if (op == Ops.BETWEEN) {
String regex = ExpressionUtils.likeToRegex((Expression) expr.getArg(1)).toString(); return asDBObject(asDBKey(expr, 0), Pattern.compile(regex));
/** * Convert the given like pattern to a regex pattern * * @param expr expression to convert * @return converted expression */ public static Expression<String> likeToRegex(Expression<String> expr) { return likeToRegex(expr, true); }
} else if (op == Ops.LIKE) { String regex = ExpressionUtils.likeToRegex((Expression) expr.getArg(1)).toString(); return asDocument(asDBKey(expr, 0), new BsonRegularExpression(regex)); } else if (op == Ops.BETWEEN) {
Operation<?> o = (Operation<?>) expr; if (o.getOperator() == Ops.CONCAT) { Expression<String> lhs = likeToRegex((Expression<String>) o.getArg(0), false); Expression<String> rhs = likeToRegex((Expression<String>) o.getArg(1), false); if (lhs != o.getArg(0) || rhs != o.getArg(1)) { return operation(String.class, Ops.CONCAT, lhs, rhs);