我正在尝试从包含文本和不同长度数字的字符串中提取多个5位数字。所有5位数字均以“ DRxxxxx”开头。
源数据示例:
DR32007 DR32008 DR32009 DR32010已于11/26/18与John Boyles一起订购。
我有一个提取所有数字的函数:
=IFERROR(ArrayFormula(SPLIT(SUBSTITUTE(REGEXREPLACE(REGEXREPLACE(A1, "[^\d]", ";"), "[^\d\-\;]", ""),"-", ";"), ";")))
这将输出以下内容:
32007 32008 32009 32010 11 26 18
我想知道是否有一种方法可以仅提取5位数字(均以“ DRxxxxx”开头),而不提取其他数字。
谢谢!
答案 0 :(得分:2)
使用正则表达式可以查找数字,并使用方括号将出现的最少次数(例如\ d {5})查找为5。您还可以在DR(\ d {5,})周围加上括号,这样它就可以作为捕获组,并且如果您不希望这样做,则不包括DR
答案 1 :(得分:1)
Google表格论坛的一些解决方案:
来自:Spence Farris:
=filter(IFERROR(ArrayFormula(SPLIT(SUBSTITUTE(REGEXREPLACE(REGEXREPLACE(A1, "[^\d]", ";"), "[^\d\-\;]", ""),"-", ";"), ";"))),LEN(IFERROR(ArrayFormula(SPLIT(SUBSTITUTE(REGEXREPLACE(REGEXREPLACE(A1, "[^\d]", ";"), "[^\d\-\;]", ""),"-", ";"), ";"))))=5)
来自:maddy ...
=filter(right(split(A1," "),5),regexmatch(split(A1," "),"DR\d{5}"))