Google sheets 正则表达式从数组的一行中提取多个值
我有一张产品表Google sheets 正则表达式从数组的一行中提取多个值,google-sheets,Google Sheets,我有一张产品表 Product Vegetable Soup Meat Fish 我有一个项目清单: Item Fish and Vegetable Soup meat soup Fish and Vegetable 现在我想通过正则表达式函数从上面提取每个匹配项 我想这会很简单 {=REGEXEXTRACT(A2,TEXTJOIN('|', TRUE,PRODUCTS!A2:A))} 但是,这将不返回任何匹配项或仅返回列表中的第一个匹配项 目标产出: Item
Product
Vegetable
Soup
Meat
Fish
我有一个项目清单:
Item
Fish and Vegetable Soup
meat soup
Fish and Vegetable
现在我想通过正则表达式函数从上面提取每个匹配项
我想这会很简单
{=REGEXEXTRACT(A2,TEXTJOIN('|', TRUE,PRODUCTS!A2:A))}
但是,这将不返回任何匹配项或仅返回列表中的第一个匹配项
目标产出:
Item |Expected Output
Fish and Vegetable Soup |Fish, Vegetable, Soup
meat soup |Meat, Soup
Fish and Vegetable |Fish, Vegetable
演示表
考虑到D2是我想在其上使用表达式的文本,A2:A是我的产品列表
谢谢 找到了答案:
简短版本:
=TEXTJOIN(“,”,TRUE,ARRAYFORMULA(IFERROR(REGEXEXTRACT(SPLIT(D4,”,TRUE),TEXTJOIN(“|”),TRUE,A2:A)),”)
由于regexextract
函数在第一次匹配后结束,我们需要执行以下操作以使其在我的行上迭代
首先,我们使用split
并用空格''
=拆分(A2,”)
这给了我们
我们将其包装在一个ArrayFormula
中,根据google的帮助函数:
允许显示从数组公式返回的值
多行和/或多列以及与
阵列
下一步是使用regextract
函数,借助ArrayFormula
可以匹配从拆分返回的每个元素
=ARRAYFORMULA(REGEXEXTRACT(SPLIT(B2,“”),TEXTJOIN(“|”),TRUE,A2:A)
textjoin
返回一个单元格,其中的值由我们选择的分隔符分隔
在某些编程语言中
是一个OR语句,它给出了
最重要的是,我们使用一个IFERROR
语句忽略我们不关心的#NAs
,并使用另一个TEXTJOIN
将所有内容放在一个单元格中,以逗号分隔
=TEXTJOIN(“,”,TRUE,ARRAYFORMULA(IFERROR(REGEXEXTRACT(SPLIT(D2,”,TRUE),TEXTJOIN(“|”),TRUE,A2:A)),”)