使用 Nested Regex 或其他查找单元格中的所有匹配词?

Find ALL matching words in a cell with Nested Regex or other?

我想确定是否可以在 Google 电子表格的单元格中找到特定文本,如下例:

Text Desired Output
Cynthia and Dale went to the store Cynthia, Dale
Cynthia went to the store Cynthia

不幸的是使用了这段代码 IF(REGEXMATCH(A2,"Bob"),"Bob",IF(REGEXMATCH(A2,"Cynthia"),"Cynthia",IF(REGEXMATCH(A2,"Dale"),"Dale","Nobody")))

只有 returns 找到第一个 REGEX 匹配项,而不是我想要的多个匹配项。

任何修改公式的建议都会有所帮助。

可以在此处找到包含示例和代码的电子表格: https://docs.google.com/spreadsheets/d/1YuyFdEbqgZaSL2IbyyalVLLXsXrIAuqtaxCTXLhSuEU/edit?usp=sharing

提前致谢。

这是一种选择:

C2中的公式:

=INDEX(SUBSTITUTE(TRIM(REGEXREPLACE(A2:A,".*?\b(Bob|Dale|Cynthia)\b|.*"," "))," ",", "))

这将溢出列。


如果您需要用 'Nobody' 填充空单元格,嵌套的 REGEXREPLACE() 可能会起作用:

C2中的公式:

=INDEX(IF(A2:A="","",REGEXREPLACE(SUBSTITUTE(TRIM(REGEXREPLACE(A2:A,".*?\b(Bob|Dale|Cynthia)\b|.*"," "))," ",", "),"^$","Nobody")))

或者没有第二次替换:

=INDEX(IF(A2:A="","",SUBSTITUTE(TRIM(REGEXREPLACE(A2:A&" Nobody","(?:.*?\b(Bob|Dale|Cynthia)\b|^.*(Nobody)$|.+)"," "))," ",", ")))