Regex 如何从句子中提取时间并转换成数字?

Regex 如何从句子中提取时间并转换成数字?,regex,if-statement,google-sheets,google-sheets-formula,array-formulas,Regex,If Statement,Google Sheets,Google Sheets Formula,Array Formulas,我是否可以使用此方法从该字符串中提取时间线: 1 month in role 1 year 11 months in company 把它们转化成几个月 例如 1个月=1年11个月=23 非常感谢您的帮助 尝试过=拆分公式,但所有句子都略有不同您可以尝试使用正则表达式 =IFERROR(INDEX(SPLIT(REGEXEXTRACT(A1,"(\d+ years? (\d+ months? )?in company)"), " "), 0, 1), 0) * 12 + IFERROR(IND

我是否可以使用此方法从该字符串中提取时间线:

1 month in role 1 year 11 months in company
把它们转化成几个月

例如

1个月=1年11个月=23

非常感谢您的帮助


尝试过=拆分公式,但所有句子都略有不同

您可以尝试使用正则表达式

=IFERROR(INDEX(SPLIT(REGEXEXTRACT(A1,"(\d+ years? (\d+ months? )?in company)"), " "), 0, 1), 0) * 12 + IFERROR(INDEX(SPLIT(REGEXEXTRACT(A1,"(\d+ months? in company)"), " "), 0, 1), 0)
上面公式中的A1表示包含时间线字符串的单元格。这需要根据需要进行调整

基本上,这个公式在公司中查找x年x月。如果找到这样一个字符串,它将按空格将其拆分,并取x年中x的第一部分。如果没有找到这样的模式,例如,当字符串在角色中为1个月,在公司中为1个月时,则忽略年份部分

为了稳健性,有必要检查“年”之后是否有可选的“月”组件,然后是“公司”。否则,1年1个月的角色2年11个月的公司将返回1年,这不是我们想要的

公式的第二部分查找公司中的x个月,如果未找到,则忽略月部分,例如1年在公司中担任角色1年

B2单元中的公式:

C2单元格中的公式:


谢谢@player0,这正是我想要的!还感谢您添加了这些变体!
=ARRAYFORMULA(IFERROR(IF(REGEXMATCH(A2:A, "role"), 
 IF(REGEXEXTRACT(A2:A, "(year|mont)")="mont", REGEXEXTRACT(A2:A, "\d+"),
 IF(REGEXEXTRACT(A2:A, "(year|mont)")="year", REGEXEXTRACT(A2:A, "\d+")*12+
 IFERROR(REGEXEXTRACT(A2:A, "(\d+) mont")), )), )))
=ARRAYFORMULA(IFERROR(
 IF(REGEXEXTRACT(REGEXEXTRACT(A2:A, "role (.+)"), "(year|mont)")="mont",
 REGEXEXTRACT(REGEXEXTRACT(A2:A, "role (.+)"), "\d+"),
 IF(REGEXEXTRACT(REGEXEXTRACT(A2:A, "role (.+)"), "(year|mont)")="year",
 REGEXEXTRACT(REGEXEXTRACT(A2:A, "role (.+)"), "\d+")*12+
 IFERROR(REGEXEXTRACT(REGEXEXTRACT(A2:A, "role (.+)"), "(\d+) mont")), )), 
 IF(REGEXMATCH(A2:A, "company"), 
 IF(REGEXEXTRACT(A2:A, "(year|mont)")="mont", REGEXEXTRACT(A2:A, "\d+"),
 IF(REGEXEXTRACT(A2:A, "(year|mont)")="year", REGEXEXTRACT(A2:A, "\d+")*12+
 IFERROR(REGEXEXTRACT(A2:A, "(\d+) mont")), )), )))