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")
谢谢!
没有正则表达式
我们要抓取左边斜杠-space和space封装的值右边:
=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$")
说明
--------------------------------------------------------------------------------
( 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
我在 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")
谢谢!
没有正则表达式
我们要抓取左边斜杠-space和space封装的值右边:
=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$")
说明
--------------------------------------------------------------------------------
( 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