在我的弹性搜索设置中,我想创建以"分隔的标记。 "或" - "超过3个字符。 我相信模式标记器可以工作,但我无法创建正则表达式。
请帮我正则表达
答案 0 :(得分:1)
您应该可以在模式标记器的模式字段中使用以下正则表达式:
([^\s-]{3,})
\ s 表示任何空格字符。
- 表示文字短划线字符。
将两者放在 [^ 和] 之间意味着匹配任何不属于列表中的字符(在这种情况下,任何<强>不是空白而不是破折号)
{3,} 表示上一场比赛必须发生3次或更多次。
整个语句周围的括号表示你想要捕获内部的内容,模式标记生成器从正则表达式的匹配组中提取其标记。
你可以在这里玩这个正则表达式,看看它将如何拆分你的字符串:
https://regex101.com/r/2e9p34/1
在旁注中,可能还有其他更好的方法可以更好地处理您没有想到的边缘情况,但我决定按照您的要求完全回答您的问题。我强烈建议您探索ElasticSearch为其用例分析器提供的所有选项,以确定哪种选项最适合您的需求。
希望这有帮助!