【问题标题】:Extracting multiple values with RegEx in a Google Sheet formula在 Google Sheet 公式中使用 RegEx 提取多个值
【发布时间】:2020-05-22 12:42:18
【问题描述】:

我有一个包含 2 列的 Google 电子表格。

第一个单元格的每个单元格都包含 JSON 数据,如下所示:

{
    "name":"Love",
    "age":56
},
{
    "name":"You",
    "age":42
}

然后我想要第二列,使用公式提取名称的每个值并将其字符串如下:

Love,You

现在我正在使用这个公式:

=REGEXEXTRACT(A1, CONCATENER(CHAR(34),"name",CHAR(34),":",CHAR(34),"([^",CHAR(34),"]+)",CHAR(34),","))

正则表达式为"name":"([^"]+)",

问题是它目前只返回第一次出现,像这样:

Love

(另外,我不知道“名称”出现了多少次。可能从 0 到 20 左右。)

是否有可能实现我想要的?

非常感谢您的阅读!

编辑:

我的 JSON 数据以:

{
   "time":4,
   "annotations":[
      {

然后在中间,是这样的:

{
    "name":"Love",
    "age":56
},
{
    "name":"You",
    "age":42
}

并以:

结尾
],
   "topEntities":[
      {
         "id":247120,
         "score":0.12561166,
         "uri":"http://en.wikipedia.org/wiki/Revenue"

},
      {
         "id":31512491,
         "score":0.12504959,
         "uri":"http://en.wikipedia.org/wiki/Wii_U"

}

],
   "lang":"en",
   "langConfidence":1.0,
   "timestamp":"2020-05-22T12:17:47.380"
}

【问题讨论】:

  • 您可以执行=REGEXEXTRACT(C1, "(?s)""name"":""([^""]+)""(?:.*?""name"":""([^""]+)"")?") 之类的操作,然后继续在末尾添加可选的(?:.*?""name"":""([^""]+)"")? 以查找更多匹配项。

标签: regex google-sheets google-sheets-formula


【解决方案1】:

由于您的文本基本上是 JSON 字符串,您可以使用以下自定义函数解析其中的所有 name 字段:

function ExtractNamesFromJSON(input) {
  var obj = JSON.parse("[" + input + "]");
  var results = obj.map((x) => x["name"])
  return results.join(",")
}

然后将其用作=ExtractNamesFromJSON(C1)

如果您需要正则表达式,请使用类似的方法:

function ExtractAllRegex(input, pattern,groupId,separator) {
  return Array.from(input.matchAll(new RegExp(pattern,'g')), x=>x[groupId]).join(separator);
}

然后将其用作=ExtractAllRegex(C1, """name"":""([^""]+)""",1,",")

注意:

  • input - 当前单元格值
  • pattern - 正则表达式模式
  • groupId - 正在捕获要提取的组 ID
  • separator - 用于加入匹配结果的文本。

【讨论】:

  • 真是太棒了!两种解决方案都有效,但使用正则表达式的第二种解决方案最适合我的特定情况。非常感谢你不遗余力地帮助我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2021-03-13
  • 2022-12-30
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多