【问题标题】:How to filter using regex in Google Cloud Compute node.js getVMs如何在 Google Cloud Compute node.js getVMs 中使用正则表达式进行过滤
【发布时间】:2023-03-15 19:49:01
【问题描述】:

在 Node JS 的 Google Cloud Compute 库中,如何在 getVMs 方法中使用带有 options.filter 的正则表达式进行过滤?

文档:https://googlecloudplatform.github.io/google-cloud-node/#/docs/compute/0.7.1/compute?method=getVMs

我在下面的尝试返回一个空数组,并且文档中没有明确的示例(还没有!)。我的目标是获得一个以“前缀”作为名称开头的实例。

有 101 个实例,这是第 101 个。

compute.getVMs({
    maxResults: 100,
    filter: 'name eq ^prefix'
});

以 {name} {comparison} {filterString} 格式搜索过滤器。 name:要比较的字段的名称 比较:比较运算符,eq(等于)或ne(不等于) filterString:要过滤的字符串。 对于字符串字段,这可以是正则表达式

【问题讨论】:

    标签: javascript node.js google-cloud-platform google-compute-engine


    【解决方案1】:

    您在模式末尾缺少“.$”。基本上你需要指定你想要“匹配一个以'prefix'开头的字符串,然后是'prefix'之后的任意数量的字符,直到整个字符串的结尾”。您可以取消“整个字符串的结尾”特殊字符 ($),但不能取消“匹配任意数量的字符”特殊字符 (.)。这是一个工作示例:

    const Compute = require('@google-cloud/compute');
    const gce = new Compute({
      projectId: 'your-project-id-here'
    });
    
    gce.getVMs({
        maxResults: 100,
        filter: 'name eq ^prefix.*'
    }, function(err, vms) {
      console.log(vms);
    });
    

    【讨论】:

    • 如何按多个标签或标签进行过滤?我可以通过一个标签来做到这一点,例如 getVMs({"filter":"labels.env=devops}) 但是当我尝试使用 {"filter":"labels.env=devops,labels.type=tomcat"} 它没有有什么想法吗?
    • @yokodev 而不是逗号,试试ORAND。例如。 labels.env=devops AND labels.type=tomcat。如果不是,它可能是 || (OR) 或 && (AND)。
    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2012-06-08
    • 2015-03-21
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多