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

The*_*ter 2 regex google-sheets regex-group google-sheets-formula

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

从几行像

  1. 我爱摇滚
  2. 我爱摇滚和剪刀
  3. 我讨厌纸
  4. 我喜欢石头、纸和剪刀
  5. 我会爱自己

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

我试过了:

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

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

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

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

有任何想法吗?

Max*_*rov 5

我发现到目前为止 Google 表格不支持某些正则表达式功能

请尝试以下解决方法:

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


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

在此处输入图片说明