【问题标题】:Google Sheets formula to get text between colons谷歌表格公式获取冒号之间的文本
【发布时间】:2021-02-08 11:15:28
【问题描述】:

我正在寻找一个公式,它可以从单元格中获取冒号之间的文本和数字。我已经尝试过 regexreplace 标点符号,但是我需要版本号之间的句点,还尝试了一些 regex 并找到公式,但遗憾的是无法弄清楚,非常感谢一些帮助。

Input Expected output
cpe:2.3:a:caldera:openlinux_server:3.1:::::::* cpe 2.3 a caldera openlinux server 3.1
cpe:2.3:a:immunix:immunix:6.2:::::::* cpe 2 3 a immunix immunix 6.2
cpe:2.3:o:mandrakesoft:mandrake_linux:7.1:::::::* cpe 2.3 o mandrakesoft mandrake linux 7.1

理想情况下,这将删除所有星号 (*) 和下划线 (_),并删除“cpe 2 3 a”,但这不是完全必要的。

提前谢谢你!

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(TRIM(REGEXREPLACE(A2:A, "_|:|\*", " ")))
    

    =ARRAYFORMULA(IFNA(REGEXEXTRACT(TRIM(REGEXREPLACE(A2:A, 
     "_|:|\*", " ")), ".+\d+.\d+ . (.+)")))
    

    【讨论】:

    • 非常感谢,这正是我想要的。作为后续,是否可以从第四个冒号开始解析?所以在第一个例子中,我想要火山口之后的输出。
    • "感谢您的反馈!声望低于 15 人的投票将被记录,但不要更改公开显示的帖子得分。"我确实认为它很有帮助:)
    【解决方案2】:

    我想提出一个更简单的替代方案,让您可以了解正在发生的一切。

    解决方案:

    =ARRAYFORMULA(TRIM(TRIM(RIGHT(SUBSTITUTE(REGEXREPLACE(A1:A3, "_|:|\*", " ")," ","@",4),LEN(SUBSTITUTE(SUBSTITUTE(REGEXREPLACE(A1: A3, "_|:|\*", " ")," ","@",4))- FIND("@",SUBSTITUTE(REGEXREPLACE(A1:A3, "_|:|\*", "_|:|\*", " " ")," ","@",4)))))

    一步一步来。

    您可以尝试将每个步骤的结果保存在 B 列的单元格中,以查看解决方案是如何构建的。

    1. REGEXREPLACE 替换所有不需要的字符: =REGEXREPLACE(A1,"_|:|\*", " ")
    2. SUBSITUTE 替换用特殊字符(在本例中为@)的第四个空格: =SUBSTITUTE(B1," ","@",4)
    3. 通过获取特殊字符之后的所有字符来获取所需的子字符串。结合RIGHTFIND 来实现: =RIGHT(B2,LEN(B2)- FIND("@",B2))
    4. 使用TRIM 删除尾随空格: =TRIM(B3)
    5. 应用ARRAYFORMULA 在第一步中修改范围而不是特定单元格。
    6. 将所有步骤放在一个函数中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 2022-08-23
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多