我有以下单元格值:
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 ")),))
=REGEXEXTRACT(N2, "LOT:s+S+s+(S+):")
详
-
LOT:
- 文本子字符串LOT:
-
s+
- 1+ 空格 -
S+
- 1+ 非空格字符 -
s+
- 1+ 空格 -
(S+)
- 组 1(此部分将由REGEXEXTRACT
函数返回(:1+ 非空格字符 -
:
- 冒号
请参阅正则表达式演示。
表示A1
中的文本:
=REGEXEXTRACT(A1,"d (.*):")
A1:A3
中文本的数组公式:
=ArrayFormula(REGEXEXTRACT(A1:A3,"d (.*):"))
几种方法可以制定REGEX
表达式。共同的基本思想是找到"锚点"——共同因素。
专家已经写了一个强烈接受的答案。我只根据您提供的数据,根据一些假设提供一些替代解决方案:
锚P
:
假设数据提取将始终包含一个P
.如果其他所有内容保持不变,则最简单和最短的一个:
=REGEXEXTRACT(N1,"wP")
锚点空间:
假设在所需的数据提取之前总是有一个空格,并且它是两个非D
igit 之前的唯一空格:
=REGEXEXTRACT(N1," (DD)")
锚:
:
两个w
字符后跟一个:
=REGEXEXTRACT(N1,"b(ww):")