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

时间:2017-11-09 07:44:24

标签: regex google-sheets

我有以下单元格值:

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

3 个答案:

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