【问题标题】:Google Sheets Query Works with Contains but not with MatchesGoogle 表格查询适用于包含但不适用于匹配项
【发布时间】:2020-10-03 02:21:10
【问题描述】:

我无法弄清楚为什么我的 Matches 查询不起作用,而它与 contains 一起工作正常。我想最终将额外的东西输入到比赛中,但需要它首先工作。

包含:=QUERY(Raw!A2:P,"SELECT * WHERE K contains '<m>, 5/2/2020' ",0)

匹配:=QUERY(Raw!A2:P,"SELECT * WHERE K matches '.*<m>, 5/2/2020.*' ",0)

当我删除/更改 5 但不返回所有匹配项时,它会半工作...提供的示例数据不允许测试,但我用 2、3、4、6 进行了测试,例如:@987654324 @

K 列中一个单元格的样本数据:

Keith <k>, 5/2/2020: @Me: Thank you
_______________________
Keith <k>, 5/2/2020: @S: this is some text
_______________________
Mo <m>, 5/2/2020: @Me: more text is here
_______________________
ME <me>, 5/6/2020: text is here
_______________________
Jonathan <j>, 5/6/2020: @Me: Thank your
_______________________
Jonathan <j>, 5/6/2020: @S: text

【问题讨论】:

  • 以文本形式提供示例数据
  • 提供“样本”:证明问题确实存在的虚拟字符串。见minimal reproducible example。如果我要将您的文本复制到带有您的公式的示例列,我应该能够重现您声称存在的问题。
  • 然后我被难住了...我的工作表一直说查询已完成,但输出为空。
  • 如果放入“一个单元格”,则可重现
  • 代码是否有可能在 2020 年 5 月 2 日作为数学方程式执行?所以它正在寻找 .0012376 而不是 5/2/2020 的实际文本?

标签: regex google-sheets google-sheets-formula google-query-language multiple-matches


【解决方案1】:

Google 表格网络应用程序中的查询匹配项(与官方移动应用程序不同)似乎不支持像单行模式这样的正则表达式标志:(?s)。考虑在

中使用指向此帖子的链接创建问题

解决方法:

  • 与其他功能不同,查询功能似乎在客户端运行。如果支持使用,(?s) 赞:

    =QUERY(Raw!A2:P,"SELECT * WHERE K matches '(?s).*<m>, 5/2/2020.*' ",0)
    
  • 如果不是,使用(.|\n)(任何字符或换行符)模拟单行模式:

    =QUERY(Raw!A2:P,"SELECT * WHERE K matches '(.|\n)*<m>, 5/2/2020(.|\n)*' ",0)
    
  • 请改用containscontainsOR 应该模拟 matches' 管道 | 加入。

    =QUERY(Raw!A2:P,"SELECT * WHERE K contains "&JOIN( " or K contains ","'<m>, 5/2/2020'" ,"'<k>'")&"",0)
    

【讨论】:

  • 是的,我将使用包含。这个想法是能够输入开始日期和结束日期,并让查询从具有这些日期的用户那里提取所有条目,因此如果您为用户 指定说 5/2/2020 到 5/9/2020 它看起来对于 ,5/2/2020 或 ,5/3/2020 或 ,5/4/2020 或 ... ,5/9/2020。基于research,我认为构建一个文本连接来创建一个字符串来将它们连接在一起是最好的,但你猜不是。
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2020-04-13
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多