Google 工作表查询适用于包含但不适用于匹配

Google Sheets Query Works with Contains but not with Matches

我不明白为什么我使用 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)

当我 remove/change 5 但没有 return 所有匹配时它半工作......提供的示例数据不允许测试但我测试了 2,3, 4,6 例如: =QUERY(Raw!A2:P,"SELECT * WHERE K matches '.*<m>, 3.*' ",0)

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

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

中为这个 post 创建一个 link 问题

解决方法:

  • 查询功能似乎 运行 客户端不同于其他功能。如果支持使用,(?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)