Morphia在数据库中保存正则表达式?

时间:2014-10-15 17:16:11

标签: java regex mongodb morphia

使用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);

所以我只是硬编码正则表达式,它通过,但如果我使用我保存在数据库中的值,正则表达式永远不会工作。

显然,我无法对变量中的正则表达式进行硬编码,我必须将其存储在数据库中。在数据类型方面我是否缺少一些我将正则表达式存储为?

我有一种感觉,我只是遗漏了一些显而易见的东西,而且我已经盯着它看了太久。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

追逐这个后,我应该进一步看看这里,Morphia通过转义转义字符串来保存正则表达式,因此存储的内容不正确。