简而言之:
String regExp = "\\w{3}-\\d{3}";
System.out.println("REF-123".matches(regExp)); // IS TRUE
// Exact same regular expression extracted from the database: \\w{3}-\\d{3}
regExp = resultSet.getString("regex");
System.out.println("REF-123".matches(regExp)); // IS FALSE
非常感谢任何帮助。
排序
转义前一个斜杠的java字符串中的双斜杠,但在DB中不需要用双斜杠保存。
答案 0 :(得分:1)
字符串常量中的反斜杠符号(\
)用于转义目的。
例如
System.out.println("A\\B");
将打印A\B
。在您的数据库中,字符串必须是\w{3}-\d{3}
答案 1 :(得分:1)
这是一个想法。尝试:
System.out.println("\\www-\\ddd".matches(regularExpressionExtractedFromDB));
我们希望 true 。
字符串文字中需要双反斜杠,以使字符串包含单个反斜杠。第一个反斜杠是一个转义,第二个是被转义的字符。因此结果是一个反斜杠字符。
您从数据库获得的值必须是
\w{3}-\d{3}
等同于字符串文字“\\w{3}-\\d{3}
”。来自数据库的值不被解释为字符串文字,因此不的反斜杠需要“转义”。
System.out.println("\\w{3}-\\d{3}");