Google Sheets中含点及特殊符号的复杂REGEXREPLACE提取问题
Google Sheets 批量提取文本内容方案
以下是针对A列文本,用ARRAYFORMULA结合正则表达式实现C-F列提取的公式:
C列(Name)
提取去除独立数字、+/-符号后的文本内容,保留文本内的数字、点及特殊符号:
=ARRAYFORMULA(TRIM(REGEXREPLACE(REGEXREPLACE(A2:A, "(^|\s)[+-](\s|$)", " "), "(^|\s)(\d+\.*\d*)(\s|$)", " ")))
说明:先移除独立的+/-符号,再移除所有独立的数字序列(含小数),最后用TRIM清理首尾及多余空格。
D列(First standalone number)
提取第一个独立的数字(含小数):
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, "(?:^|\s)(\d+(?:\.\d+)?)(?:\s|$)"), ""))
说明:匹配首尾或空格包裹的数字序列,用非捕获组排除空格,提取核心数字;IFERROR处理无匹配的空值。
E列(Second standalone number)
提取第二个独立的数字(含小数):
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(REGEXREPLACE(A2:A, "(?:^|\s)(\d+(?:\.\d+)?)(?:\s|$)", " ", 1), "(?:^|\s)(\d+(?:\.\d+)?)(?:\s|$)"), ""))
说明:先通过REGEXREPLACE替换掉第一个数字序列(仅替换1次),再对剩余内容提取第一个数字序列,实现提取第二个目标数字。
F列(Sign)
提取文本中的+/-符号:
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, "(?:^|\s)([+-])(?:\s|$)"), ""))
说明:匹配独立的+/-符号(被空格或首尾包裹),提取符号本身;无符号时返回空值。
内容的提问来源于stack exchange,提问作者Max Ambinder
相关产品推荐
相关产品推荐

