对字符串 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
(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":".*?")})|(.*)","")
仔细观察后我意识到我想把 headers 也去掉,所以最后的 RE2 更简单
(?:.*?:(".*?"))|(.*)
我做了 Google 张纸,我在过去几个小时里一直在使用 REGEXREPLACE
函数,一般来说我有这个:
string1: "blah blah blah @abc blah @bcd blah blah"
我想要这个:
string2: "@abc @bcd"
我尝试用 REGEXEXTRACT(string1,"@[^\s]+")
提取它,但是这个函数不能全局使用,所以我用 REGEXREPLACE
来替换除 @abc
和 @bcd
以外的所有东西""
,但为此我需要否定 @[^\s]+
!
怎么做?
我认为这会有所帮助(替换为 1 美元):
/(?:.*?(@\S*))|(.*)/ig
(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":".*?")})|(.*)","")
仔细观察后我意识到我想把 headers 也去掉,所以最后的 RE2 更简单
(?:.*?:(".*?"))|(.*)