首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >狮身人面像中可能的RegexP_Filter错误?

狮身人面像中可能的RegexP_Filter错误?
EN

Stack Overflow用户
提问于 2015-12-27 00:50:13
回答 2查看 159关注 0票数 0

我在做这样的事情:

  • 替换也是单词(例如HI=Hawaii)的大写首字母缩写词,作为将来搜索的upper_$Accronym。
  • 在模式匹配上这样做。

例如,对于上面的HI,我会这样做:

代码语言:javascript
复制
regexp_filter = (HI)(\W+(?:\w+\W+){0,3}?(Manufacturing)\b) => upper_\1\2

我使用\2是因为

代码语言:javascript
复制
https://regex101.com/r/uZ4zK1/1

第二个捕获组给了我所需要的领先空间,所以这个术语(理论上)变成了

代码语言:javascript
复制
upper_HI Manufacturing

我的问题是,在这个过程中的某个地方,"Hi“只被认为是”嗨“。

下列任何一项都与索引记录匹配:

代码语言:javascript
复制
select  Name from idx_Test WHERE (MATCH('"upper_Hi Manufacturing"'))
select  Name from idx_Test WHERE (MATCH('"upper_Hi" "Manufacturing"'))
select  Name from idx_Test WHERE (MATCH('"upper_Hi"'))

所有这些操作都失败了:

代码语言:javascript
复制
select  Name from idx_Test WHERE (MATCH('"upper_HI Manufacturing"'))
select  Name from idx_Test WHERE (MATCH('"upper_HI" "Manufacturing"'))
select  Name from idx_Test WHERE (MATCH('"upper_HI"'))

即使我明确地强制"HI“在:

代码语言:javascript
复制
regexp_filter = (HI)(\W+(?:\w+\W+){0,3}?(Manufacturing)\b) => upper_HI\2

我也会犯同样的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-27 10:05:07

请记住,regex_filter也应用于查询

所以你应该去找

代码语言:javascript
复制
select Name from idx_Test WHERE MATCH('"HI Manufacturing"')

你不需要自己应用转换。事实上,在您的例子中,它将是“双”应用,一次由您,一次由斯芬克斯,将它转化为MATCH('"upper_upper_hi manufacturing"'),这就是为什么它不匹配。

混合情况下的“Hi”类工作,因为regex过滤器不会触发。记住regex是区分大小写的。

它仍然匹配,因为charset_table使得匹配不区分大小写。

票数 0
EN

Stack Overflow用户

发布于 2015-12-27 03:07:24

如果你想匹配(hi\hi/hi),那么你可以显式地定义每一个,或者更好地添加一个标志来触发不区分大小写的匹配:(?i)

代码语言:javascript
复制
regexp_filter = (?i)(HI)(\W+(?:\w+\W+){0,3}?(Manufacturing)\b) => upper_\1\2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34476664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档