首页 > 解决方案 > Kibana 弹性搜索正则表达式字符串长度

问题描述

我正在尝试在发现选项卡中使用过滤器作为字段。我想通过像abc ***这样的正则表达式来过滤它。我需要过滤表以检查列是否包含以“abc”或“ABC”开头的模式的单词,并且继续具有 4 个其他字符(小 lr 大写字母)或数字的组合。

示例“abcnk12”、“ABC09PL”、“abc0978”。前 3 个字母是不变的。

任何人都可以建议如何编写这样的正则表达式,或者是否有其他方法可以这样做。

标签: regexpattern-matchingkibanaelastic-stack

解决方案


似乎 Kibana 正则表达式不支持^$锚点,因为它们是隐含的(完全匹配总是完成的),但我在下面的正则表达式演示中包含了这些锚点,它们是必需的。此外,以下正则表达式不需要指定不区分大小写的标志:

(abc|ABC)[a-zA-Z0-9]{4}

见正则表达式演示

如果前 7 个字符后面可能有其他任意字符,那么我们需要.*在末尾添加:

(abc|ABC)[a-zA-Z0-9]{4}.*

请参阅:正则表达式查询

如果您指定case-insensitive=true,则正则表达式可以简化为:

abc[a-z0-9]{4}

但请注意,诸如此类的值aBcxxxx将被接受。


推荐阅读