regex - 从 Google 表格上的文本中提取特定数字?

标签 regex google-sheets filter

数据如下表所示。我试图从文本中提取小时(h)和分钟(m)来计算谷歌表格中的总持续时间。 ex 3h 24m 等于 3.4 我无法错误地提取分钟部分。

我尝试过以下功能,这些功能对于小时部分工作良好,但对于分钟部分则失败。

=LEFT(c1, SEARCH("h",c1)-1)

=IFERROR((REGEXEXTRACT(D1,"([[:print:]]+)h")),0)

C        D
4h       2h 49m
32m 19s  2h 2m
6h 7m    3h 24m

最佳答案

要将小时、分钟和秒提取到单独的列中,您可以使用三个单独的 REGEXEXTRACT 公式:

=IFERROR(REGEXEXTRACT(C1,"(\d+)h"), "")
=IFERROR(REGEXEXTRACT(C1,"(\d+)m"), "")
=IFERROR(REGEXEXTRACT(C1,"(\d+)s"), "")

这里,(\d+) 是一个捕获组,它捕获 1 个或多个数字,并且后面的字母只是匹配,因此函数不会返回。

您还可以尝试使用可选模式提取每个部分:

=REGEXEXTRACT(C1, "(?:(\d+)h)?\s*(?:(\d+)m)?\s*(?:(\d+)s)?")

在这里,所有小时、分钟和秒模式都是可选的,即使缺少小时,分钟仍然会匹配。

详细信息

  • (?:(\d+)h)? - 用非捕获组包裹的可选小时部分:
    • (\d+) - 第 1 组:一位或多位数字
    • h - h 字母
  • \s* - 0+ 个空格
  • (?:(\d+)m)? - 可选的分钟部分:
    • (\d+) - 第 2 组:一位或多位数字
    • m - m 字母
  • (?:(\d+)s)? - 可选的秒部分:
    • (\d+) - 第 3 组:一位或多位数字
    • s - s 字母

关于regex - 从 Google 表格上的文本中提取特定数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62123042/

相关文章:

excel - 数据到位后停止公式运行

google-sheets - 谷歌电子表格 : Alternating Background Color on Value Change?

C# 使用 bool 函数将列表拆分为两个列表

javascript - 正则表达式匹配重复数字而不排序

c# - 这个正则表达式在做什么 : new Regex( @"(?<!\\),");

regex - 使用正则表达式检索字符之间的字符串

java - 使用过滤器在登录尝试失败后重定向

Java 正则表达式匹配如果前面没有关键字

javascript - 对数组列求和并将结果存储在二维数组中 (Javascript)

ios - 通过不包含字符串来过滤数组(swift 2)