对字符串 RE2 google 工作表的正则表达式否定查询

regex negative query on string RE2 google sheets

我做了 Google 张纸,我在过去几个小时里一直在使用 REGEXREPLACE 函数,一般来说我有这个:

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

我想要这个:

string2: "@abc @bcd"

我尝试用 REGEXEXTRACT(string1,"@[^\s]+") 提取它,但是这个函数不能全局使用,所以我用 REGEXREPLACE 来替换除 @abc@bcd 以外的所有东西"",但为此我需要否定 @[^\s]+
怎么做?

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

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

[Regex Demo]

(edit) 我建议其他答案在表格中不起作用,但我没有仔细查看@shA.t 的答案,在事实完美无缺。这将是表格实施:

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

我原来的回答:

不幸的是,我认为其他答案在 Google 表格的上下文中不起作用,它不支持电子表格函数正则表达式中的 "look-aheads"。

看看这是否有效:

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

谢谢 shA.t ...我正在尝试使用 google 工作表对 JSON 文件提取数据字段进行类似的操作,方法是包含我当时想要的内容 运行 进入工作表使用的 RE2 的限制。使用 REGEXREPLACE 并排除我不想要的东西就像一个魅力,只是通过反复试验代替它直到完美

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

demo

仔细观察后我意识到我想把 headers 也去掉,所以最后的 RE2 更简单

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

demo