为什么 REGEXEXTRACT returning 一个单一的值,而它应该 return 一个 1 行和多列的数组?
Why is REGEXEXTRACT returning a single value when it is expected to return an array of 1 row and multiple columns?
Google 电子表格中的矩阵管理功能非常方便,结合处理正则表达式(如 REGEXMATCH 和 REGEXEXTRACT 等)的功能,使其特别有用。
我有一个案例,我不知道什么是到期的,没有给出预期的结果。这是我正在尝试做的事情:
电子表格设置
区域设置:墨西哥,使用 .
(点)作为小数点分隔符。
条目
A1: abcde
公式
B1:=ArrayFormula(REGEXEXTRACT(A1,{".{1}",".{2}"}))
预期结果
B1:a
B2:ab
得到的结果
B1:a
B2:
已知解决方法
=ArrayFormula(TRANSPOSE(REGEXEXTRACT(A1,{".{1}";".{2}"})))
此问题也已发布在西班牙网站上 -> https://es.whosebug.com/q/55704/65
您在特定公式中看不到预期结果的原因是您使用 arrayformula 和 regexextract 的顺序 - 您需要修改 regex 语法以提取 2 个组,或者您需要创建一个数组以将每个正则表达式提取函数分开。
有几种方法可以做到这一点,一种方法是创建文字数组并仅指定 2 种提取模式:
={REGEXEXTRACT(A1,"^."),REGEXEXTRACT(A1,"^.{2}")}
另一种是创建 2 个捕获组,第二个唯一的问题是默认以相反的顺序返回,但您可以通过 sort()
:
轻松交换它
=REGEXEXTRACT(A1,"^((.).)")
引用 Jean-Pierre Verhulst 在 REGEXEXTRACT Array Mysteriously Stopped Working Today (Google Docs Help Forum) 中的类似案例:
The team is well aware of the issue and a fix should be there soon.
巧合的是,它发表于 2017 年 1 月 4 日,同一天 AdamL modified his answer to ARRAYFORMULA() does not work with SPLIT(),解释说:
REGEXEXTRACT no longer appears to support an array for the second argument.
我们可以得出结论,ArrayFormula 中的这种行为是由于 Google Sheets 中的修改,允许在数组公式中进行 SPLIT,结果是 REGEXEXTRACT 不接受多列作为输入正则表达式。
这可能是因为 REGEXEXTRACT 在正则表达式中有多个捕获组,生成一个水平数组,每个组一个单元格。有一个数组作为参数,行为可能是未定义的,但这在我这边是有争议的。
Google 电子表格中的矩阵管理功能非常方便,结合处理正则表达式(如 REGEXMATCH 和 REGEXEXTRACT 等)的功能,使其特别有用。
我有一个案例,我不知道什么是到期的,没有给出预期的结果。这是我正在尝试做的事情:
电子表格设置
区域设置:墨西哥,使用 .
(点)作为小数点分隔符。
条目
A1: abcde
公式
B1:=ArrayFormula(REGEXEXTRACT(A1,{".{1}",".{2}"}))
预期结果
B1:a
B2:ab
得到的结果
B1:a
B2:
已知解决方法
=ArrayFormula(TRANSPOSE(REGEXEXTRACT(A1,{".{1}";".{2}"})))
此问题也已发布在西班牙网站上 -> https://es.whosebug.com/q/55704/65
您在特定公式中看不到预期结果的原因是您使用 arrayformula 和 regexextract 的顺序 - 您需要修改 regex 语法以提取 2 个组,或者您需要创建一个数组以将每个正则表达式提取函数分开。
有几种方法可以做到这一点,一种方法是创建文字数组并仅指定 2 种提取模式:
={REGEXEXTRACT(A1,"^."),REGEXEXTRACT(A1,"^.{2}")}
另一种是创建 2 个捕获组,第二个唯一的问题是默认以相反的顺序返回,但您可以通过 sort()
:
=REGEXEXTRACT(A1,"^((.).)")
引用 Jean-Pierre Verhulst 在 REGEXEXTRACT Array Mysteriously Stopped Working Today (Google Docs Help Forum) 中的类似案例:
The team is well aware of the issue and a fix should be there soon.
巧合的是,它发表于 2017 年 1 月 4 日,同一天 AdamL modified his answer to ARRAYFORMULA() does not work with SPLIT(),解释说:
REGEXEXTRACT no longer appears to support an array for the second argument.
我们可以得出结论,ArrayFormula 中的这种行为是由于 Google Sheets 中的修改,允许在数组公式中进行 SPLIT,结果是 REGEXEXTRACT 不接受多列作为输入正则表达式。
这可能是因为 REGEXEXTRACT 在正则表达式中有多个捕获组,生成一个水平数组,每个组一个单元格。有一个数组作为参数,行为可能是未定义的,但这在我这边是有争议的。