我有以下单元格值:
LOT: 4 SP: 144731
LOT: 7 RP: 804923
LOT: 6 RP: 804923
我想获得:
SP
RP
RP
我一直在尝试以下值,其中值位于第N列:
=ARRAYFORMULA(IF(REGEXMATCH(N2,"LOT: [1-9]+? :"),TRIM(REGEXREPLACE(N2,".*?(?:LOT: ([1-9]+?) :|$)","$1 ")),))
使用以下方法获取批次值,但我需要SP / RP等值
=ARRAYFORMULA(IF(REGEXMATCH(N2,"LOT: .+? RP:"),TRIM(REGEXREPLACE(N2,".*?(?:LOT: (.+?) RP:|$)","$1 ")),))
答案 0 :(得分:1)
A1
中的文字:
=REGEXEXTRACT(A1,"\d (.*):")
A1:A3
中的文字的ArrayFormula:
=ArrayFormula(REGEXEXTRACT(A1:A3,"\d (.*):"))
答案 1 :(得分:1)
您可以使用
=REGEXEXTRACT(N2, "LOT:\s+\S+\s+(\S+):")
<强>详情
LOT:
- 文字子串LOT:
\s+
- 1+空格\S+
- 1 +非空白字符\s+
- 1+空格(\S+)
- 第1组(此部分将由REGEXEXTRACT
函数返回):1 +非空白字符:
- 冒号请参阅regex demo。
答案 2 :(得分:1)
您可以通过多种方式制定REGEX
表达式。共同的基本想法是找到“锚” - 共同因素。
专家已经提出了一个强烈的接受答案。我将根据您提供的数据,基于一些假设提供一些替代解决方案:
P
:假设摘录总是包含P
。如果其他一切都保持不变,最容易和最短的一个:
=REGEXEXTRACT(N1,"\wP")
假设在所需的提取之前总是有一个空格,它是两个非D
之前的唯一空格:
=REGEXEXTRACT(N1," (\D\D)")
:
:两个w
ord字符后跟:
=REGEXEXTRACT(N1,"\b(\w\w):")