Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从Google电子表格中的单元格中提取多个值(如果存在)_Regex_Google Sheets_Google Sheets Formula_Regex Group - Fatal编程技术网

Regex 从Google电子表格中的单元格中提取多个值(如果存在)

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})。*(剪刀{

使用谷歌re2

从几行像

  • 我喜欢摇滚乐
  • 我喜欢石头和剪刀
  • 我讨厌纸
  • 我喜欢石头、布和剪刀
  • 我爱我自己
  • 我想从每一行中提取“石头”、“布”和“剪刀”。我想让正则表达式匹配上面所有的五行,并给我石头,布和剪刀,在那里它发现了一些东西。我主要在谷歌表单中使用它,但任何谷歌re2正则表达式都应该有所帮助

    我试过:

    “*([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开始了我的帖子,以说明限制。你的配方很好用