从Google Spreadsheets中的单元格中提取多个值

时间:2017-08-02 09:20:24

标签: regex google-sheets regex-group

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

来自

之类的几行
  
      
  1. 我爱摇滚
  2.   
  3. 我爱摇滚和剪刀
  4.   
  5. 我讨厌纸
  6.   
  7. 我喜欢摇滚,纸和剪刀
  8.   
  9. 我爱自己
  10.   

我想提取" Rock"," paper""剪刀"从每一行。我希望正则表达式匹配以上所有五行并给我摇滚,纸和剪刀找到的东西。我主要在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}我得到" k"即使找到完整的摇滚乐。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

到目前为止,我发现Google表格中不支持某些regex features

请尝试以下解决方法:

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

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

enter image description here

答案 1 :(得分:0)

(Rock)将搜索字母R o c k。相反,请使用$ python3 --version Python 3.6.2 $ python --version Python 2.7.13 $ aws --version aws-cli/1.11.120 Python/2.7.10 Darwin/16.0.0 botocore/1.5.83