Regex 从Google电子表格中的单元格中提取多个值(如果存在)
使用谷歌re2 从几行像Regex 从Google电子表格中的单元格中提取多个值(如果存在),regex,google-sheets,google-sheets-formula,regex-group,Regex,Google Sheets,Google Sheets Formula,Regex Group,使用谷歌re2 从几行像 我喜欢摇滚乐 我喜欢石头和剪刀 我讨厌纸 我喜欢石头、布和剪刀 我爱我自己 我想从每一行中提取“石头”、“布”和“剪刀”。我想让正则表达式匹配上面所有的五行,并给我石头,布和剪刀,在那里它发现了一些东西。我主要在谷歌表单中使用它,但任何谷歌re2正则表达式都应该有所帮助 我试过: “*([Rock]{0,4})).*” “*([Rock]{4})|([Rock]{0})).*” =REGEXEXTRACT(A2,“.*(石头{0,2})。*(布{0,2})。*(剪刀{
“*([Rock]{0,4})).*”
“*([Rock]{4})|([Rock]{0})).*”
=REGEXEXTRACT(A2,“.*(石头{0,2})。*(布{0,2})。*(剪刀{0,2})。*”
和其他多种组合,从任何一条线中获得岩石,如果有的话。。。但是,它总是喜欢零而不是四。。。即使它找到了Rock,也会返回空字符串。如果我用{1}替换{0},即使找到了完整的岩石,我也会得到“k”
有什么想法吗?
[Rock]
将搜索字母R o c k。相反,请使用(Rock)
我发现到目前为止,谷歌表单中还不支持一些
请尝试以下解决方法:
=ArrayFormula(iError(REGEXREPLACE(A3,REGEXREPLACE(A3,“(石头|布|剪刀)”,“(.*”),{“$1”,“$2”,“$3”))
在步骤1中,此公式为步骤2生成正则表达式:
[Rock]{0,4}
匹配字符类中的空字符或1到4个字符。@Toto,是的。如果没有找到Rock,它应该给我空的,这样我就不会得到错误->整个正则表达式与字符串不匹配。因此,它可以继续搜索给定字符串中的纸张。主要问题是偏好。它应该优先选择4个字符,而不是0。因为贪婪的*
环绕。如果要在字符串中匹配Rock
,只需使用\bRock\b
,无需其他任何操作。@toto我希望上面所有5行(包括第5行)都匹配相同的正则表达式,但捕获这三个词(如果存在)。=regextract(A16,“\b(?:Rock | paper |剪刀)?\b”)我也尝试删除了未捕获的内容。。还是一样的结果…我试过。。。虽然它会给我一个完美的“摇滚”匹配,但我无法量化它。。。句子中可能有零块石头,这会给我一个错误。(Rock){0,4}
?=REGEXEXTRACT(A2,“.*(Rock{0,2})。*(paper{0,2})。*(剪刀{0,2})。*”)也会给我一个零,当发现一块石头时,它更喜欢零匹配,而不是正确匹配。我确实用Google re2 GitHub开始了我的帖子,以说明限制。你的配方很好用