Regex 在[strings in a cell]中找到[strings in a cell]时返回真/假?

Regex 在[strings in a cell]中找到[strings in a cell]时返回真/假?,regex,google-sheets,google-sheets-formula,array-formulas,google-sheets-query,Regex,Google Sheets,Google Sheets Formula,Array Formulas,Google Sheets Query,单元格A1包含多个字符串,例如“猫狗鼠GNU” 单元格B1包含多个字符串,例如“RAT CAT” 如何运行测试(使用C1中的公式)以确定B1中的所有字符串是否都存在于单元格A1中 返回真/假就好了 字符串的顺序不一定相同,如上例所示 项目的数量可能会有所不同 多个实例不成问题,只要它们存在 但仅当单元格B1中的所有项都存在于单元格A1中时,才会返回true 到目前为止,我已经尝试过使用vlookups和匹配、计数等转置分割数组,但没有任何效果。(可能regex不会这样做,因为不能为每个字符串

单元格A1包含多个字符串,例如“猫狗鼠GNU”

单元格B1包含多个字符串,例如“RAT CAT”

如何运行测试(使用C1中的公式)以确定B1中的所有字符串是否都存在于单元格A1中

  • 返回真/假就好了
  • 字符串的顺序不一定相同,如上例所示
  • 项目的数量可能会有所不同
  • 多个实例不成问题,只要它们存在
  • 但仅当单元格B1中的所有项都存在于单元格A1中时,才会返回true
到目前为止,我已经尝试过使用vlookups和匹配、计数等转置分割数组,但没有任何效果。(可能regex不会这样做,因为不能为每个字符串循环?

您可以尝试:

=ARRAYFORMULA(IF(PRODUCT(N(NOT(ISNA(REGEXEXTRACT(SPLIT(B1, " "), 
 SUBSTITUTE(A1, " ", "|"))))))=1, TRUE))

要获得更高的精度,您可以执行以下操作:

=ARRAYFORMULA(IF(PRODUCT(N(NOT(ISNA(REGEXEXTRACT(SPLIT(B1, " "), 
 "^"&SUBSTITUTE(A1, " ", "$|^")&"$")))))=1, TRUE))

然后,对于案例不敏感:

=ARRAYFORMULA(IF(PRODUCT(N(NOT(ISNA(REGEXEXTRACT(SPLIT(LOWER(B1), " "), 
 "^"&SUBSTITUTE(LOWER(A1), " ", "$|^")&"$")))))=1, TRUE))


真正的数组公式是:

=ARRAYFORMULA(IF((A1:A<>"")*(B1:B<>""), IF(REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(
 REGEXMATCH(IF(SPLIT(B1:B, " ")<>"", SPLIT(LOWER(B1:B), " "), 0), 
 "^"&SUBSTITUTE(LOWER(A1:A), " ", "$|^")&"$"))),,999^99)), "FALSE"), FALSE, TRUE), ))
=ARRAYFORMULA(IF((A1:A“”)*(B1:B“”),IF(REGEXMATCH)(TRANSPOSE)(查询)(TRANSPOSE)(IFERROR(
REGEXMATCH(如果(拆分(B1:B),“”),拆分(较低的(B1:B),“”),0),
“^”&替换(较低的(A1:A),”,“$”和“$”),999^99),“假”),假,真),)