【问题标题】:Google Sheets regex keep part of text in each cell谷歌表格正则表达式在每个单元格中保留部分文本
【发布时间】:2019-11-22 20:34:58
【问题描述】:

我有一列在单元格中包含以下文本:

Colors/Red;Foods/Apple;Category/Featured;

Foods/Banana;Category/Recent;Colors/Yellow;

Colors/Blue;Foods/Grapes;Category/New;

我想只保留每个单元格中的 Category/Something; 文本组并删除所有其他文本。

例如,我正在尝试获取以下内容:

Category/Featured;   

Category/Recent; 

Category/New;

我尝试了像/Category.*;$/g 这样的正则表达式(从Category 开始,首先结束;),但它匹配到文本的结尾,而不是分号;

我也尝试过/Category.{1};$/g,但还是不行。

我也不确定如何保留匹配项并删除所有其他文本。

【问题讨论】:

    标签: regex google-sheets extract google-sheets-formula array-formulas


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(IFNA(REGEXEXTRACT(A1:A, "(Cat.*?\;)")))
    


    =ARRAYFORMULA(IF(A1:A="",, SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IFNA(
     REGEXEXTRACT(SPLIT(A1:A, ";"), "^Category/.*"))),,999^99))), " ", ";")&";"))
    

    【讨论】:

    • 哇,效果很好!您知道这是否也可以提取多个匹配项?例如Category/Featured;Color/Green;Category/New; 看起来它只提取了 1
    • 看起来只在谷歌电子表格中,它只提取了 1 个匹配项。否则,如果我在正则表达式测试器中尝试,正则表达式会找到多个匹配项
    • 谢谢!这对我来说是一个非常困难的公式!它现在很好用,但如果单词之间有空格似乎会出现问题。例如Category/Featured News; 将变为Category/Featured;News; 在空格中添加分号;。我知道我没有在我的问题中添加这些示例,但是有没有办法忽略空格?空格将很常见。
    • @Cyber​​J 当然,试试:=ARRAYFORMULA(IF(A1:A="",, SUBSTITUTE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IFNA( REGEXEXTRACT(SPLIT(SUBSTITUTE(A1:A, " ", "♦"), ";"), "^Category/.*"))),,999^99))), " ", ";")&";", "♦", " ")))
    • 哈哈谢谢!只是想确保因为我以前没有使用过它。这个公式效果很好。
    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2021-07-19
    相关资源
    最近更新 更多