正则表达式在 Google 表格的空格和句点之间找到值



我有以下单元格值:

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):")

相关内容

最新更新