正则表达式解析谷歌表格中单元格中的单词

Posted

技术标签:

【中文标题】正则表达式解析谷歌表格中单元格中的单词【英文标题】:REGEX to parse words from cell in googlesheets 【发布时间】:2020-08-20 03:02:15 【问题描述】:

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

单元格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 表格本身中使用时无效。

【问题讨论】:

这很容易通过替换和前瞻,但谷歌表格似乎也不支持前瞻。您可能必须将正则表达式与其他 Google 表格功能结合起来才能查找和加入匹配项。不幸的是,我对 Google 表格并没有真正的经验。希望其他人会帮助你。不过是个好问题;赞成。 是的.. 这让我困惑了 24 小时。我已经阅读了 20 篇关于解析和正则表达式的不同 *** 帖子.. 尝试了它们.. 但无济于事:( 【参考方案1】:

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

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

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

输出:

Pitch Decks
Data Sheet

【讨论】:

【参考方案2】:

尝试:

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

【讨论】:

我不确定我是否理解特殊字符的使用.. 但上面 41686d6564 的解决方案可以解决问题。非常感谢您的帮助!

以上是关于正则表达式解析谷歌表格中单元格中的单词的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML 单元格中使用 HTML 解析 Python 正则表达式 [重复]

什么正则表达式将匹配文本,不包括 HTML 标记中的内容?

用于在 Calc 中搜索和替换的正则表达式

如何在Google表格中获取某些值后如何进行正则表达式提取

使用正则表达式查看单元格是不是包含 Google 表格中的表情符号

精确匹配正则表达式中的多个单词(数据表)