Google Sheets查询适用于Contains,但不适用于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)

当我删除/更改5,但没有返回所有匹配项时,它是半工作的。。。提供的样本数据不允许测试,但我用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

Query在Google表单web应用程序中的匹配项(与官方移动应用程序不同(似乎不支持类似单行模式的regex标志:(?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)
    

最新更新