字符串RE2谷歌表上的正则表达式否定查询

时间:2015-07-27 03:49:17

标签: regex google-sheets re2

我会使用Google表格,并且我在过去几个小时内与REGEXREPLACE功能作斗争,一般情况下我都有:

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

我想要这个:

string2: "@abc @bcd"

我尝试使用REGEXEXTRACT(string1,"@[^\s]+")提取它,但此功能无法全局工作,因此我使用REGEXREPLACE替换除@abc@bcd以外的所有内容"",但要做到这一点,我需要否定@[^\s]+! 怎么做?

3 个答案:

答案 0 :(得分:4)

我认为这有助于(换1美元):

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

[Regex Demo]

答案 1 :(得分:1)

(编辑)我建议其他答案在Sheets中不起作用,但我没有仔细查看@ shA.t的答案,事实上工作得很好。这将是表格实施:

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

我原来的回答:

不幸的是,我认为其他答案不会在Google表格的背景下发挥作用,而Google表格不支持"预见"在电子表格函数正则表达式。

看看是否有效:

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

答案 2 :(得分:0)

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

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

demo

在仔细观察之后,我意识到我也希望删除标题,因此最终的RE2更简单

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

demo