Sphinx中奇怪的正则表达式匹配错误

时间:2015-12-22 04:57:49

标签: regex sphinx

我试图将我的数据库中的节目的开始时间从各种符号映射到houram / pm,所以我制作了一个regexp_filter:

regexp_filter = ([0-9]|10|11|12)( a|a)(.)?(m)(.)? =>\1am

似乎与查询一起运作

select  ID,Name from idx_Table WHERE (MATCH('"8am"')) 

但突然间我一直在

[Err] 1064 - index idx_Table: syntax error, unexpected $end near ''

如果我删除"来自查询并执行

select  ID,Name from idx_Table WHERE (MATCH('8am')) 

它有效。

如果我改变了" am"到" AM"并保留报价

select  ID,Name from idx_Table WHERE (MATCH('"8AM"'))

它有效(???)这很奇怪,因为据我所知,Sphinx不区分大小写。

最后,如果我注释掉regex_p,它就可以了。任何想法,因为我正式难倒。

更新: 以某种方式思考"在查询中引入错误然后删除它们,但是现在我得到的错误是

[Err] 1064 - 索引idx_Tabke:语法错误,意外' /'靠近' / 2(披露)

所以regex_p中的某些东西似乎引入了一个sphinx不喜欢的角色?

1 个答案:

答案 0 :(得分:0)

最后的点匹配'吞下''am'之后的任何字符。因此,在您的情况下,“从查询中删除”。如果确实要删除某些内容,请更具体,以便不匹配“

此外,sphinx区分大小写,其设置charset_table正常。正则表达式也区分大小写,这就是AM没有被替换的原因。