【问题标题】:How do I grab multiple values in regex?如何在正则表达式中获取多个值?
【发布时间】:2017-10-27 17:16:09
【问题描述】:

我正在尝试过滤掉 3 个用于模板的 sensu 检查值。

我使用 Elasticsearch 作为数据源

Query: {"find": "terms","field":"check_name.keyword"}

Regex: /.*_error_100.*|.*_error_200.*|.*_error_300.*/

我的正则表达式错了吗?

谢谢 德文郡

【问题讨论】:

  • 您的解决方案有什么问题?您当前的正则表达式看起来不错。它可以重写为.*_error_[123]00.*,但你确定你在正确的地方使用了这个模式吗? / 是否需要围绕该模式?相关文件是什么?

标签: regex elasticsearch grafana


【解决方案1】:

匹配.* 之类的所有内容非常慢,并且使用环视 正则表达式。

通过正则表达式查询某些字段(示例查询):

{
    "query": {
        "regexp":{
            "somefield": "_error_[123]00"
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax

【讨论】:

  • Lucene 的模式总是被锚定的。提供的模式必须匹配整个字符串。必须在 Lucene 正则表达式模式中使用.*_error_[123]00.* 来匹配包含模式的字段。
  • 完美谢谢!!!仍在学习正则表达式和 lucene 查询.. 如果可以,我想再问一个问题(相同的主题).. 如果我想对主机名做同样的事情,这行吗ip-10-1-[80-96]-.* 试图获得多个子网这个(ip 是主机名)。
猜你喜欢
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
相关资源
最近更新 更多