我想用逗号连接几个单词,而用逗号将它们在单元格中找不到。
例如,从包含的单元格中
i want to use sheets to create events in calendar through gmail.
我想要这个输出: 床单,Gmail,日历
我尝试过这样的正则表达式:
=ArrayFormula(IFERROR(REGEXREPLACE(LOWER(A2:A);"(.)?(sheets|calendar|gmail)?";"$2, "))))"
但是我得到这样的各种结果: ,,,工作表,,,,,,,,日历,,,,,, ,,工作表,,,,,,,,, ,,,,,,,,,,,日历,,,,,,,,,,
我想知道如何像这样清洁它: 床单,日历 床单,gmail gmail,日历
摆脱之前和之后的无用逗号 到目前为止,使用更复杂的公式,我可以得到:
=ArrayFormula(IFERROR(REGEXREPLACE(REGEXREPLACE(MINUSCULE(A2:A);"(.)?(sheets|calendar|gmail)";"$2, ");"(, )+";", ")))
不过,结果还是不完美,因为我得到了: ,工作表,日历, ,工作表,gmail, ,gmail,日历,
我正在使用两次regexreplace公式。 顺便说一句,我可以使用join或textjoin来做到这一点,但是它不适用于整个列的arrayformula,因此不合适。
我认为使用()捕获元素是可能的,但是我知道其中一些是真正的正则表达式专家!
你有个主意吗?
答案 0 :(得分:1)
您可以使用
=ARRAYFORMULA(REGEXREPLACE(TRIM(REGEXREPLACE(A2:A, "(?si)(sheets|calendar|gmail)?.?", "$1 ")), "\s+", ","))
注释:
REGEXREPLACE(A2:A, "(?si)(sheets|calendar|gmail)?.?", "$1 ")
-这将用空格代替不是sheets
,calendar
和gmail
子字符串起点的每个字符,并放回这些char序列如果找到了TRIM(...)
将从以上REGEXREPLACE
的结果中去除开头/结尾的空白REGEXREPLACE(..., "\s+", ",")
将用单个逗号替换1个或多个空格字符。