Regex 如何使用Google Sheets或SQL获取此字符串的第一部分

Regex 如何使用Google Sheets或SQL获取此字符串的第一部分,regex,google-apps-script,google-sheets,google-sheets-formula,google-sheets-query,Regex,Google Apps Script,Google Sheets,Google Sheets Formula,Google Sheets Query,我有一根像AA_BB_CC_EEE_FF_GGG的线。 可以有任何字母或数字来代替这些字母 如何在以下条件下使用Google Sheets或SQL获取此字符串的第一部分AA_BB_CC_EEE: 到EEE为止的字符数是不同的,例如我在中间有BBB; 我知道3个字符EEE的所有可能变体; EEE始终由3个字符组成。 谢谢大家! 如果您不想使用相当长/复杂的Google工作表公式,您可以在Google应用程序脚本中设置自己的自定义函数。从电子表格文件打开脚本编辑器。清除基本文件并复制以下功能: fu

我有一根像AA_BB_CC_EEE_FF_GGG的线。 可以有任何字母或数字来代替这些字母

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

到EEE为止的字符数是不同的,例如我在中间有BBB; 我知道3个字符EEE的所有可能变体; EEE始终由3个字符组成。
谢谢大家!

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

function Process(input) {
var res = input.indexOf("EEE");
var final = input.slice(0,res+3);
return final;
}
然后,您可以将此自定义函数应用于所需输入,方法与应用其他函数相同:

=Process(A1)
这将返回所需的输出:

AA_BB_CC_EEE

如果您需要有关自定义函数如何工作的更多信息,请遵循这些。他们非常直截了当


如果您的EEE的三个已知变体是EEE、EEF和EEG,则此Google Sheets公式将与单元格C35中的AA_BB_CC_EEE_FF_GG一起使用:

它产生:AA_BB_CC_EEE

在PostgreSQL中,类似于:

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

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

尝试:


字符串中第一个字符的结尾表示“向上”和“直到”字符EEE吗?第一个项目符号是否意味着也可以有不带下划线的值?e、 g.阿比?还是总是两个字符后跟一个下划线,后跟两个字符,后跟一个下划线,后跟两个字符,后跟一个下划线,后跟三个字符?还是一直都是第四个下划线的字符串?你说我知道3个字符EEE;的所有可能变体;。所有这些可能的变体是什么?共享一份工作表副本
select regexp_replace('AA_BB_CC_EEFfjdkaljfkal', '^(.*(EEE|EEF|EEG)).*$', '\1');

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

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