Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Google工作表中使用REGEXMATCH进行筛选,以筛选出单元格中包含的文本_Regex_Google Sheets_Filter_Google Sheets Formula_Textjoin - Fatal编程技术网

在Google工作表中使用REGEXMATCH进行筛选,以筛选出单元格中包含的文本

在Google工作表中使用REGEXMATCH进行筛选,以筛选出单元格中包含的文本,regex,google-sheets,filter,google-sheets-formula,textjoin,Regex,Google Sheets,Filter,Google Sheets Formula,Textjoin,现在我有这些数据,我正试图过滤掉单元格C3、C4等中包含的数据 我可以过滤1个单元格的regexmatch数据,如下所示 但我无法对超过2个单元格执行regexmatch,例如,似乎我无法在单元格之间进行管道工程,因为我会得到解析错误,我也尝试添加C3 | C4 及 我想要的输出如下所示,但我只能硬编码包含的文本,其中不是我想要的。我希望我能有一些技巧来对多个单元格中的文本进行regexmatch,这样它就可以对C3Apple和C4Pear单元格中的文本进行regexmatch,并显示所需的输出

现在我有这些数据,我正试图过滤掉单元格C3、C4等中包含的数据

我可以过滤1个单元格的regexmatch数据,如下所示

但我无法对超过2个单元格执行regexmatch,例如,似乎我无法在单元格之间进行管道工程,因为我会得到解析错误,我也尝试添加C3 | C4

我想要的输出如下所示,但我只能硬编码包含的文本,其中不是我想要的。我希望我能有一些技巧来对多个单元格中的文本进行regexmatch,这样它就可以对C3Apple和C4Pear单元格中的文本进行regexmatch,并显示所需的输出

你可以用

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, TEXTJOIN("|", TRUE, C3:C4) )), "no input")
如果需要使搜索不区分大小写,只需在开始处附加?i:

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, "(?i)\b(?:" & TEXTJOIN("|", TRUE, C3:C4) & ")\b")), "no input")
看看上面说的:

组合来自多个字符串和/或数组的文本,并使用分隔不同文本的可指定分隔符

因此,当您将TRUE作为第二个参数传递时,您不必担心范围是否包含空单元格,并且正则表达式不会被无关的| | |破坏

测试:

你可以用

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, TEXTJOIN("|", TRUE, C3:C4) )), "no input")
如果需要使搜索不区分大小写,只需在开始处附加?i:

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, "(?i)\b(?:" & TEXTJOIN("|", TRUE, C3:C4) & ")\b")), "no input")
看看上面说的:

组合来自多个字符串和/或数组的文本,并使用分隔不同文本的可指定分隔符

因此,当您将TRUE作为第二个参数传递时,您不必担心范围是否包含空单元格,并且正则表达式不会被无关的| | |破坏

测试:

对于C列中的动态列表,您需要使用TEXTJOIN:

=IF(TEXTJOIN( , 1, C3:C)<>"", FILTER(A2:A, REGEXMATCH(LOWER(A2:A), 
 TEXTJOIN("|", 1, LOWER(C3:C)))), "no input")
对于C列中的动态列表,您需要使用TEXTJOIN:

=IF(TEXTJOIN( , 1, C3:C)<>"", FILTER(A2:A, REGEXMATCH(LOWER(A2:A), 
 TEXTJOIN("|", 1, LOWER(C3:C)))), "no input")

哦我不知道你可以用C3和C4来代替C3和C4,这回答了我的问题!但是如果我有更多的单元格要过滤,我会在其中添加更多的行吗?=IFC3,FILTERA2:A,REGEXMATCHA2:A,C3&&|&C4&|,&C5,通过添加更多类似于C5,C6,C7的内容来避免输入etc@Lyber好的,我用一种更一般的方法编辑了答案。使用JOIN |,C3:c4谢谢!使用连接公式,一切看起来都更整洁。从那里我找到了TEXTJOIN,它可以忽略空格too@Lyber我在答案中添加了一个指向文档的链接。而且,正如我所看到的,我添加了一个不区分大小写的变体。哦!我不知道你可以用C3和C4来代替C3和C4,这回答了我的问题!但是如果我有更多的单元格要过滤,我会在其中添加更多的行吗?=IFC3,FILTERA2:A,REGEXMATCHA2:A,C3&&|&C4&|,&C5,通过添加更多类似于C5,C6,C7的内容来避免输入etc@Lyber好的,我用一种更一般的方法编辑了答案。使用JOIN |,C3:c4谢谢!使用连接公式,一切看起来都更整洁。从那里我找到了TEXTJOIN,它可以忽略空格too@Lyber我在答案中添加了一个指向文档的链接。另外,正如我所看到的,我添加了一个不区分大小写的变体。谢谢!我确实尝试过类似于=FILTERH2:H,regexmatch2:H,TEXTJOIN |,TRUE,D2:D20的东西,但是它不区分大小写,您的工作非常完美@Lyber很高兴这有帮助-谢谢!我确实尝试过类似于=FILTERH2:H,regexmatch2:H,TEXTJOIN |,TRUE,D2:D20的东西,但是它不区分大小写,您的工作非常完美@利伯很高兴这有帮助-