我想找到与特定正则表达式模式不匹配的文档,但我在re2中看不到任何支持 - rethinkdb使用的正则表达式库(https://github.com/google/re2/wiki/Syntax)。此外,我尝试使用带有r.js()
的服务器端javascript执行此操作,但我似乎无法正确提取语法,以便在嵌套字段中提取要匹配的字符串,其中每个键名都是字符串键。我在row [“key”]和row.key中得到了未定义的对象错误:
```
filter(r.js('(function(row){
var re = /(?!(json|JSON))$/;
return re.test(row.student_record.the_test);
})'))
```
答案 0 :(得分:2)
r.js
是最后的工具。另外,据我所知,JavaScript和RE2如何协同工作,因为/.../
在JavaScript中是标准化的,所以应该通过特定对象进行一种绑定(如果RethinkDB甚至为r.js
上下文提供任何内容,并且很可能/.../
永远不能做RE2可以做的事情。)
如下:
r.db('test')
.table('test')
.filter(doc =>
doc.hasFields({'student_record': { 'the_test': true }})
.and(doc('student_record')('the_test').match('(json|JSON)$').not())
) // matches all documents that have $.student_record.the_test not matching the regexp
或
r.db('test')
.table('test')
.filter(doc =>
doc.hasFields({'student_record': { 'the_test': true }})
.and(doc('student_record')('the_test').match('(json|JSON)$'))
.not()
) // matches even documents that do not have $.student_record.the_test
doc.hasFields({'student_record': { 'the_test': true }})
- 验证给定文档的JSON路径。doc('student_record')('the_test').match('(json|JSON)$')
- 检查$.student_record.test
是否与正则表达式匹配。顺便问一下,你可能正在寻找'\\.(?:json|JSON)$'
吗? (请参阅组前的转义点\.
。)。not()
- 反转表达式结果。