REGEX解析来自Googlesheets单元格中的单词

问题描述

希望有人可以帮助我了解语法。

单元格A1包含以下值:

Content Type: Pitch Decks; Region: north America; Content Type: Data Sheet;

我正在尝试创建一个公式来解析单词"Content Type: "和其后的分号之间的值。

因此在B1中,公式的预期结果应为:

Pitch Decks
Data Sheet

(是的,char(10)分隔了B1中的值)

我尝试了REGEXEXTRACT的许多不同组合,例如:

REGEXEXTRACT(A11,"Content Type: ([\w\/\s]*);?")

..仅返回:

Pitch Decks

我读到Google表格不支持全局修饰符。当我在正则表达式测试工具中添加全局修饰符时,该公式有效,但在Google表格本身中使用时,则无效。

解决方法

我认为使用替换和Lookahead会很容易,但是事实证明Google表格也不支持Lookaheads。经过研究,我提出了以下解决方案:

=join(CHAR(10),REGEXEXTRACT(A1,REGEXREPLACE(A1,"(Content Type: )([^;]+)","$1($2)")))

这将找到“内容类型:”之后到下一个分号或字符串末尾的所有字符串。然后,它将使用LineFeed加入他们。如果要使用其他字符加入,则可以将CHAR(10)替换为",",例如以逗号分隔。

输出:

Pitch Decks
Data Sheet
,

尝试:

=ARRAYFORMULA(SUBSTITUTE(SUBSTITUTE(TRIM(FLATTEN(QUERY(TRANSPOSE(SUBSTITUTE(
 IF(IFERROR(REGEXMATCH(SPLIT(A1:A,";"),"Content Type")),REGEXEXTRACT(SPLIT(A1:A,": (.+)"),)," ","♥")),9^9))),CHAR(10)),"♥"," "))

enter image description here