我有一个包含交易列表的 Google 表格。我需要在 E 列中隔离 D 列中单词“结束”之后的最多三个单词或数字。正确的正则表达式函数应该是正向后视,但 RE2 不支持它(来源:Using positive-lookahead (?=regex) with re2 )。
此公式在 GSheets 中返回错误:
=REGEXEXTRACT(D1;"(?<=end\s)(\w+)")
所以我的结论是,在这种情况下,正则表达式是一个死胡同。
如何在 GSheets 中获取请求的结果?
最佳答案
您可以在正则表达式中使用捕获组来制作 REGEXEXTRACT
只返回捕获的部分:
=REGEXEXTRACT(D1;"end\s*(\w+)")
如果您需要在
end
之后返回 1、2 或 3 个以空格分隔的单词, 用=REGEXEXTRACT(D1;"end\s*(\w+(?:\s+\w+){0,2})")
见online demo (Golang 正则表达式也使用 RE2)。
详情
end
- end
\s*
- 0+ 个空格 (\w+(?:\s+\w+){0,2})
- 捕获组 1:\w+
- 1+ 个字字符(字母、数字或 _
)(?:\s+\w+){0,2}
- 0、1 或 2 次\s+
- 1+ 个空格 \w+
- 1+字字符。 关于谷歌表格中的正则表达式正向后视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897464/