使用 RegEx 提取文本(无需 VBA)

使用 RegEx 提取文本(无需 VBA)

我有以下文本,我想提取采购订单号。有时它以单词 PO 开头,有时则不以。如果不是,则采购订单号将以 901 或 902 开头。

PO 或 PO 编号可以从开头、中间或结尾开始。开头和/或结尾处总会有一个空格“分隔符”

sometexthere sometext 123 90112345 sometext
some text PO90199 sometexthere
some 90 1 901999999 sometext
sometexthere 902123456
sometexthere PO90212334
PO902101010 sometext here
9019394 sometext here

我想要提取的是

90112345
PO90199
901999999
902123456
PO90212334
PO902101010
9019394

答案1

使用 BYROW 迭代列并使用 FILTERXML 拆分文本。然后使用 FILTER 从 FILTERXML 数组返回正确的项:

=BYROW(A1:A7,LAMBDA(a,LET(txt,FILTERXML("<t><s>"&SUBSTITUTE(a," ","</s><s>")&"</s></t>","//s"),FILTER(txt,ISNUMBER(MATCH(LEFT(txt,3),{"PO9","901","902"},0))))))

在此处输入图片描述


笔记:

注 1:FILTERXML 仅适用于 PC 版本。

注2:一旦引入TEXTSPLIT,我们就可以避免FILTERXML:

=BYROW(A1:A7,LAMBDA(a,LET(txt,TEXTSPLIT(a," "),FILTER(txt,ISNUMBER(MATCH(LEFT(txt,3),{"PO9","901","902"},0))))

相关内容