3

我做谷歌表格,REGEXREPLACE过去几个小时我一直在与功能作斗争,一般来说我有这个:

string1: "blah blah blah @abc blah @bcd blah blah"

我想要这个:

string2: "@abc @bcd"

我尝试用它来提取它,REGEXEXTRACT(string1,"@[^\s]+")但这个函数不能在全局范围内工作,所以我用它来替换除and toREGEXREPLACE之外的所有东西,但要做到这一点,我需要否定! 怎么做?@abc@bcd""@[^\s]+

4

3 回答 3

4

我认为这会有所帮助(使用 1 美元替换):

/(?:.*?(@\S*))|(.*)/ig

[正则表达式演示]

于 2015-07-27T04:15:23.350 回答
1

(编辑)我建议其他答案在表格中不起作用,但我没有仔细查看@shA.t 的答案,这实际上非常有效。这将是 Sheets 实现:

=REGEXREPLACE(L1,"(?:.*?(@\S*))|(.*)","$1")

我原来的答案:

不幸的是,我认为其他答案在 Google Sheets 的上下文中不起作用,它不支持电子表格函数正则表达式中的“前瞻”。

看看这是否有效:

=ArrayFormula(TRIM(JOIN(" ",IFERROR(REGEXEXTRACT(SPLIT(L1," "),"^@.+")))))

于 2015-07-27T23:38:38.177 回答
0

谢谢你 shA.t ...我试图通过包含我想要的内容然后遇到工作表使用的 RE2 的限制来使用 google 表格提取数据字段的 JSON 文件做类似的事情。使用 REGEXREPLACE 并排除我不想要的东西就像一个魅力,只是通过反复试验代替它直到它是完美的

=REGEXREPLACE(L1,"(?:.*?{("guid":".*?")})|(.*)","$1")

演示

仔细观察后,我意识到我也希望删除标题,所以最终的 RE2 更加简单

(?:.*?:(".*?"))|(.*)

演示

于 2016-08-30T10:26:09.583 回答