【问题标题】:How to get the first part of this string using Google Sheets or SQL如何使用 Google 表格或 SQL 获取此字符串的第一部分
【发布时间】:2020-07-29 12:22:40
【问题描述】:

我有一个类似“AA_BB_CC_EEE_FF_GGG”的字符串。 可以用任何字母或数字代替这些字母

如何在以下条件下使用 Google 表格或 SQL 获取此字符串“AA_BB_CC_EEE”的第一部分:

  • 到 EEE 的字符数不同(例如我在中间有 BBBBB);
  • 我知道 3 个字符 EEE 的所有可能变体;
  • EEE 始终由 3 个字符组成。

谢谢!

【问题讨论】:

  • 你的字符串 end_of_first_part 是否在说 EEE 字符?
  • 您的第一个要点是否意味着您也可以拥有没有下划线的值?例如AABBBBBEEE?还是 总是 两个字符后跟一个下划线,然后是两个字符,然后是一个下划线,然后是两个字符,然后是一个下划线,然后是三个字符?或者它总是直到第四个下划线的字符串?
  • 你说I know all possible variants of 3 characters EEE;。所有这些可能的变体是什么?
  • 分享您的工作表副本

标签: regex google-apps-script google-sheets google-sheets-formula google-sheets-query


【解决方案1】:

如果EEE 的三个已知变体是EEEEEFEEG,则此Google 表格公式将在​​单元格AA_BB_CC_EEE_FF_GG 中使用AA_BB_CC_EEE_FF_GG@:

=REGEXREPLACE(C35, "^(.*(EEE|EEF|EEG)).*$", "$1")

它产生:AA_BB_CC_EEE

在 PostgreSQL 中类似:

select regexp_replace('AA_BB_CC_EEFfjdkaljfkal', '^(.*(EEE|EEF|EEG)).*$', '\1');

 regexp_replace
----------------
 AA_BB_CC_EEF
(1 row)

【讨论】:

    【解决方案2】:

    如果您不想使用很长/很复杂的 Google 表格公式,您可以在 Google Apps 脚本中设置自己的自定义函数。从电子表格文件中打开脚本编辑器。清除基本文件,复制如下函数:

    function Process(input) {
    var res = input.indexOf("EEE");
    var final = input.slice(0,res+3);
    return final;
    }
    

    然后您可以像应用其他函数一样将此自定义函数应用于期望输入:

    =Process(A1)
    

    这将为您返回所需的输出:

    AA_BB_CC_EEE

    如果您需要更多关于自定义函数如何工作的信息,请关注这些instructions。它们非常简单。

    【讨论】:

      【解决方案3】:

      尝试:

      =ARRAYFORMULA(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
       ARRAY_CONSTRAIN(IFERROR(SPLIT(A1:A, "_")), 9^9, 4)),, 9^9))), " ", "_"))
      

      【讨论】:

        猜你喜欢
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        • 2022-06-14
        • 2022-11-16
        • 1970-01-01
        • 2010-10-21
        相关资源
        最近更新 更多