【问题标题】:Sheets query matches with new line表格查询与新行匹配
【发布时间】:2023-04-02 07:16:01
【问题描述】:

如何让工作表查询在包含换行符的单元格中匹配?

我尝试了matches '.*Something.*(?s).*Something.*,但无法正常工作。

我宁愿不更改输入查询的数据。

这是一个样本表:https://docs.google.com/spreadsheets/d/1sYqhuW-5ldfz69LZjSI_L6FwdfGs6pXeMakJKrtMsCw/edit?usp=sharing

【问题讨论】:

  • 我很确定一定有办法做到这一点。但是我无法通过工作表功能使其成为可能。您会因为 Apps Script 中的自定义函数而失望吗?你以前用过 Apps 脚本吗?
  • 我以前使用过应用程序脚本,但我正在寻找一种能够使用内置“查询”功能的解决方案。
  • 那么@player0 回答对你不起作用的原因是什么?创建一个额外的帮助列对您来说可行吗?
  • @player0 的答案没有使用“匹配”,这使您可以使用其他正则表达式模式。我在问题中写道,辅助列也不是最终解决方案。

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


【解决方案1】:

你可以这样做:

=QUERY(A2:A7, "where lower(A) contains 'pear'")

【讨论】:

  • 也许我的问题并不清楚,但我试过你的答案,它仍然只匹配样本表中的最后一个单元格。我希望它返回所有包含梨的单元格(除了一个)。问题不在于它是大写还是小写。
  • "Contains" 可以在我现在正在处理的特定情况下工作,但是正则表达式可以让你做更多的事情。你知道如何用“匹配”来做到这一点吗?还有你为什么用lower(A)?
【解决方案2】:

这是我想出的:

=QUERY(A2:A7, "where lower(A) matches '(.*\n)*.*(pear).*(\n.*)*'")

lower 完全是可选的,我只是用来帮助我进行测试。请记住相应地调整您的regEx

希望这对你有用,因为我花了很尴尬的时间来做这件事。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    相关资源
    最近更新 更多