使用Morphia(通过PlayFramework 1.2.7)执行我在Mongo(2.6)中存储的正则表达式时遇到问题
基本上我有一个包含字符串字段的模型(下面和剪切):
@Entity("rules")
public class Rule {
public String urlRule; // regular expression
}
然后我进行了单元测试:
@Test
public void testRule() {
Rule r = Rule.findById(ID);
assertNotNull(r);
final String urlToTest = "/foo/bar?q=1";
Pattern pattern = Pattern.compile(r.urlRule);
assertTrue(pattern.matcher(urlToTest).matches());
}
现在,我知道示例URL我知道字符串确实匹配,但上面的测试失败了。
如果我只是改变测试,我可以通过:
String regex = "\\/foo\\/bar\\?q=(.*)";
Pattern pattern = Pattern.compile(regex);
所以我只是硬编码正则表达式,它通过,但如果我使用我保存在数据库中的值,正则表达式永远不会工作。
显然,我无法对变量中的正则表达式进行硬编码,我必须将其存储在数据库中。在数据类型方面我是否缺少一些我将正则表达式存储为?
我有一种感觉,我只是遗漏了一些显而易见的东西,而且我已经盯着它看了太久。任何帮助将不胜感激。
答案 0 :(得分:0)
追逐这个后,我应该进一步看看这里,Morphia通过转义转义字符串来保存正则表达式,因此存储的内容不正确。