【发布时间】:2013-01-11 07:00:57
【问题描述】:
根据 Mongo 文档,它使用 PCRE 引擎,并且 PCRE 支持 \b 和 \w 用于 unicode 字符,但遵循 RegEx 与 Unicode 字符串不匹配,是否有任何解决方案或替代语法?
// in Mongo console:
db.col.find({word:/\b\pL\b/});
// in PHP
(new Mongo())->db->col->find(['word'=>new MongoRegex('/\b\pL\b/u')]);
【问题讨论】:
-
哪一个不匹配? PHP的?两个都?它应该匹配的字符串是什么?
-
@Thilo 两者,例如考虑这个字符串:“ی ش a”,其中包含三个匹配项。
-
也许你可以告诉我们它在哪里说 MongoDB 支持 unicode,因为上面的页面:docs.mongodb.org/manual/reference/operator/regex/#_S_regex 没有提到这一点,而且 MongoDB 以 utf8 格式存储数据,所以除非它之后转换(它不会't) 那么它就行不通了。顺便说一下,PCRE 和 unicode PCRE 是两个不同的东西,PCRE 是 Perl 兼容的正则表达式,它仅表示正则表达式运算符在 MongoDB 中使用的表达式类型
标签: php regex mongodb unicode word-boundary