- :
class RegexTransformer {
public String fromQuery(String query) {
StringBuilder sb = new StringBuilder();
sb.append("^");
sb.append(query.replaceAll("(\\p{Upper}(?!\\p{Lower}))",
"$1\\\\p{Alpha}*?"));
sb.append("$");
return sb.toString();
}
}
. API- (?!pat), POSIX \p{class} *?.
:
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class RegexTransformerTest {
private RegexTransformer rt = new RegexTransformer();
@Test
public void testQueries() {
String in = "MyPossibleResultString";
String q1 = "MyPossibleResultString";
String q2 = "MPRS";
String q3 = "MPRString";
String q4 = "MyPosResStr";
String q5 = "M";
test(in, q1, "^MyPossibleResultString$");
test(in, q2, "^M\\p{Alpha}*?P\\p{Alpha}*?R\\p{Alpha}*?S\\p{Alpha}*?$");
test(in, q3, "^M\\p{Alpha}*?P\\p{Alpha}*?R\\p{Alpha}*?String$");
test(in, q5, "^M\\p{Alpha}*?$");
}
private void test(String in, String query, String expected) {
assertEquals("transform", expected, rt.fromQuery(query));
assertTrue("match", in.matches(rt.fromQuery(query)));
}
}