如果存在于 Google 电子表格中的单元格中,则提取多个值

Extract multiple values if present from cell in Google Spreadsheets

使用Google re2 https://github.com/google/re2/blob/master/doc/syntax.txt

来自像

这样的几行
  1. I love Rock
  2. I love Rock and scissors
  3. I hate paper
  4. I like Rock, paper and scissors
  5. I'd love myself

我想从每一行中提取“石头”、“布”和“剪刀”。我希望正则表达式匹配以上所有五行,并在找到东西的地方给我石头剪刀布。我主要在 Google 工作表中使用它,但任何 Google re2 正则表达式都应该有所帮助。

我试过:

".*(([Rock]{0,4})).*"

".*(([Rock]{4})|([Rock]{0})).*"

=REGEXEXTRACT(A2,".*(Rock{0,2}).*(paper{0,2}).*(scissors{0,2}).*")

和多个其他组合从任何行获取 Rock ,如果存在......但是,它总是更喜欢零而不是四个......即使它找到 Rock ,它 returns 空字符串。如果我用 {1} 替换 {0},即使找到了完整的 Rock,我也会得到“k”。

有什么想法吗?

[Rock] 将搜索字母 R o c k。相反,使用 (Rock)

我发现目前 Google 工作表不支持某些 regex features

请试试这个解决方法:

=ArrayFormula(IFERROR(REGEXREPLACE(A3,REGEXREPLACE(A3,"(Rock|paper|scissors)","(.*)"),{"","",""})))


在第 1 步中,此公式为第 2 步生成正则表达式: