匹配逗号,但不包括括号-Google表格RE2

时间:2018-11-28 16:31:11

标签: regex google-sheets re2

好吧,听我说!我已经看过数十个类似的RegEx问题,但是上下文就是一切!我正在尝试将正则表达式搜索合并到Google表格功能中,该功能将匹配长字符串中的所有逗号,同时不包括括号内的逗号。应该足够简单,但是,Google表格使用的RE2显然不喜欢环顾四周,并且经常引发令人沮丧的错误(“参数2值“无论如何”都不是有效的正则表达式。”)。因此,我采用的许多方法都没有成功。

我应该注意,我必须(使用我的老板)在此过程中使用Google表格,我将数据直接从我们的一个API提取到表格中,并且该API中的结构无法更改。完全欢迎其他任何建议!

数据如下:

  

Almonds_111,Amaranth_222,Anchovy_333,Apple(中度有机)_444,Apricot_5555,朝鲜蓟_6666

我需要匹配主要逗号,以便我可以用它们定界(或更改它们并用新字符定界),同时保持次要逗号周围的数据完整(即“((中等,有机)”))。 / p>

以下是我到目前为止尝试过的一些内容:

  • 整洁的环视功能可在regex101中使用,但不适用于工作表

    (?<=\d), 
    
  • 在Sheets(或regex101 heh)中无法使用的更复杂的外观

    ,(?=(((?!\]).)*\()|[^\[\)]*$)
    
  • 尝试不捕获组(同样,我必须缺少有关不捕获组与捕获组概念的某些信息?因为运行此命令时仍包括不捕获组...)

    (?:\d)(,)
    
  • 在regex101中正确匹配,但在Sheets中不正确

    ,\s*(?![^()]*\))
    

好的,这就是要点!任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

西服:

=regexreplace(substitute(A1,",","#"),regexextract(substitute(A1,",","#"),"\(.+\)"),regexextract(A1,"\((.+)\)"))

enter image description here