我正在尝试在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,它似乎描述了与模拟器相同的操作。
答案 0 :(得分:0)
根据您的描述,Google正在按预期工作,其他网站链接不是。您的正则表达式匹配^,+
,以及其他内容(即开头的一个或多个逗号),并用一个逗号替换它们。如果输入字符串在开头有逗号,我希望输出也有一个逗号。
你可以建立你已经用另一个正则表达式替换的东西,并删除任何领先的逗号:
REGEXREPLACE(REGEXREPLACE(M12,"((,+ ,)|,+)",","), "^,+", "")
这使用原始的一个,减去前面的逗号部分,来做原始替换,然后在第二次调用中将其包装起来,寻找只是引导逗号,并替换那些没有任何东西。
话虽如此,你的原始正则表达式也没有按预期工作,并且在所有情况下都不会将所有逗号和空格剥离到单个逗号。相反,你可以使用这个:
REGEXREPLACE(REGEXREPLACE(M12,"( ?(, *)+)",","), "^,+", "")
这会查找一个可选空格,后跟一个或多个逗号,每个逗号后面都有零个或多个逗号,用一个逗号替换整个批次,然后保留新的"删除所有逗号" 34;也替换。
答案 1 :(得分:0)
这样做的另一个好方法是:
=TEXTJOIN(", ",1,SPLIT(A1,", "))