Google电子表格中的REGEXREPLACE

时间:2015-04-16 15:36:21

标签: regex google-sheets

我正在尝试在Google表格中使用REGEX来清除以逗号分隔的数据到达的表单数据,其中包含任意前导逗号和单个空格。

表格中的样本数据:

  

,,冰箱,,,,, ,,滑动,双滑动,微波炉,室内淋浴,内置立体声,日/夜开关,蓝光/ DVD

我想用

REGEXREPLACE(text, regular_expression, replacement)

删除逗号之间可能出现的多个逗号和单个空格,替换为单个逗号,以便该行显示

  

冰箱,滑梯,双滑道,微波炉,。 。 。等

匹配字符串(^,+|(,+ ,)|,+) works properly in the Rubular.com simulator,但在Google电子表格中使用,例如上面的原始数据粘贴在单元格M12作为源文本:

REGEXREPLACE("M12","(^,+|(,+ ,)|,+)",",")

通过不删除一个主要逗号而失败。

  

,冰箱,,,,, ,, Slide ,,双滑动,微波炉,室内淋浴,内置立体声,日/夜开关,蓝光/ DVD

Googlesheet REGEX帮助指向https://github.com/google/re2/blob/master/doc/syntax.txt,它似乎描述了与模拟器相同的操作。

2 个答案:

答案 0 :(得分:0)

根据您的描述,Google正在按预期工作,其他网站链接不是。您的正则表达式匹配^,+,以及其他内容(即开头的一个或多个逗号),并用一个逗号替换它们。如果输入字符串在开头有逗号,我希望输出也有一个逗号。

你可以建立你已经用另一个正则表达式替换的东西,并删除任何领先的逗号:

REGEXREPLACE(REGEXREPLACE(M12,"((,+ ,)|,+)",","), "^,+", "")

这使用原始的一个,减去前面的逗号部分,来做原始替换,然后在第二次调用中将其包装起来,寻找只是引导逗号,并替换那些没有任何东西。

话虽如此,你的原始正则表达式也没有按预期工作,并且在所有情况下都不会将所有逗号和空格剥离到单个逗号。相反,你可以使用这个:

REGEXREPLACE(REGEXREPLACE(M12,"( ?(, *)+)",","), "^,+", "")

这会查找一个可选空格,后跟一个或多个逗号,每个逗号后面都有零个或多个逗号,用一个逗号替换整个批次,然后保留新的"删除所有逗号" 34;也替换。

答案 1 :(得分:0)

这样做的另一个好方法是:

=TEXTJOIN(", ",1,SPLIT(A1,", "))