Regexport() 整数和带小数的数字

Regexport() both integers and numbers with decimals

我在 Google 表格中工作,想知道是否可以使用一个 regexport() 函数来导出整数和部分数字。
我有一列:

1 Ml/ 2 Ml
2 Ml/ 2.02 Ml
3 Ml/ 4.01 Ml

并想要一个列:

2
2.02
4.01

第一个值也可以是 2.00。

我想知道这是否可以专门用于正则表达式。我知道没有它该怎么做。我目前有 regexport(cell#, "\/\D(\d+)\D")

谢谢!

没有正则表达式

我们要抓取左边斜杠-spacespace封装的值右边:

=TRIM(MID(A1,FIND("/ ",A1)+2,FIND(" ",A1,FIND("/ ",A1)+2)-(FIND("/ ",A1)+2)))

(Excel 和 Google 工作表应该以相同的方式工作。如果我们必须抓取多个实例,我会使用 Regex.)

使用:

=ARRAYFORMULA(IFNA(REGEXEXTRACT(A1:A2, " (\d+\.\d+) Ml"), 
                   REGEXEXTRACT(A1:A2, " (\d+) Ml")))

我认为作为模式,您只需要:

(\d+(?:\.\d+)?) Ml$

  • ( - 第一组。
    • \d+ - 一个或多个数字。
    • (?: - 打开非捕获组。
      • \.\d+ - 一个点后跟一位或多位数字。
      • )? - 关闭非捕获组并使其可选。
    • ) - 关闭第一个捕获组。
  • Ml$ - 逐字匹配“Ml”到结尾的字符串 ancor ($).

将此添加到 ARRAYFORMULA(),如:

=ARRAYFORMULA(REGEXEXTRACT(A1:A3,"(\d+(?:\.\d+)?) Ml$"))

您也可以尝试更简单的方法,它可以同时处理错误和 returns 结果作为数字。

=ArrayFormula(IFERROR( 
        REGEXEXTRACT(A1:A,"/ (.*) ")*1))

使用

=REGEXEXTRACT(A1, "(\d[\d.]*)\s*Ml$")

proof

说明

--------------------------------------------------------------------------------
  (                        group and capture to :
--------------------------------------------------------------------------------
    \d                       digits (0-9)
--------------------------------------------------------------------------------
    [\d.]*                   any character of: digits (0-9), '.' (0
                             or more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of 
--------------------------------------------------------------------------------
  \s*                      whitespace (\n, \r, \t, \f, and " ") (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  Ml                       'Ml'
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string