谷歌表格公式获取冒号之间的文本
Posted
技术标签:
【中文标题】谷歌表格公式获取冒号之间的文本【英文标题】: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”,但这不是完全必要的。
提前谢谢你!
【问题讨论】:
【参考方案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 列的单元格中,以查看解决方案是如何构建的。
-
用REGEXREPLACE 替换所有不需要的字符:
=REGEXREPLACE(A1,"_|:|\*", " ")
用SUBSITUTE 替换用特殊字符(在本例中为@)的第四个空格:
=SUBSTITUTE(B1," ","@",4)
通过获取特殊字符之后的所有字符来获取所需的子字符串。结合RIGHT 和FIND 来实现:
=RIGHT(B2,LEN(B2)- FIND("@",B2))
使用TRIM 删除尾随空格:
=TRIM(B3)
应用ARRAYFORMULA 在第一步中修改范围而不是特定单元格。
将所有步骤放在一个函数中
【讨论】:
以上是关于谷歌表格公式获取冒号之间的文本的主要内容,如果未能解决你的问题,请参考以下文章