【问题标题】:Regex to find a unique pattern正则表达式找到一个独特的模式
【发布时间】:2021-10-09 04:31:58
【问题描述】:

您好,我尝试使用正则表达式获取特定模式,但没有成功。我有以下字符串,想知道是否可以使用正则表达式:

query pets {
  breed(some params lorem ipsum) {
    totalDogs
    dogs {
      adopted(some params) {
        has {
          owner
          ownerId
          petId
        }
      }
      ownerName
      ownerId
      Id
    }
  }
}

我的最终目标是从上面的数据字符串中得到如下字符串:adopted.has[*].ownerId

adopted.has[*].ownerId 中的 [*] 将以正则表达式模式或其他任何可能的方式硬编码。

【问题讨论】:

  • 一般来说,你可能需要一个解析器来满足这种类型的需求。
  • 考虑到上述查询是字符串,我可以使用什么解析器?
  • 您可以尝试编写自己的解析器,或者,如果失败,请考虑使用像 ANTLR 这样的库。您接受的正则表达式解决方案可能没问题,前提是没有边缘情况。

标签: javascript regex regular-language nsregularexpression


【解决方案1】:

如果我理解正确的话,adoptedhasownerId 是变量吗? 如果是这样 - 请参阅:https://regex101.com/r/c7TEKR/1

/\s+(.+)\(.+\).+\s+(.+?)\s+.+\s+.+\s+(.+)/g => $1.$2[*].$3

【讨论】:

  • 嘿,谢谢,感谢您的帮助。您能否在以下字符串中提供帮助,因为我的查询(字符串)将具有参数和额外的变量。上述表达式不适用于以下情况:regex101.com/r/fHwmae/1 目标是得到:adopted.has[*].ownerId
  • 您好,请帮忙^?
  • regex101.com/r/TS17nb/1 但我不明白你的用例
  • 嘿,谢谢,我很感激。只是最后一个问题。是否可以删除字符串之前的所有内容。例如在下面的代码中:regex101.com/r/d1tLon/1 你能写一个表达式,删除dogs 之前的所有内容,只保留这个字符串:regex101.com/r/L7TCwj/1 如果我可以给你买杯咖啡,请告诉我:)
  • 感谢您的提议,但只需支持和/或接受我的回答即可。我只是不明白你的问题,比如什么是可变的,什么是静态的。无论如何,可能会有所帮助:regex101.com/r/6lsyf3/1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多