如果存在于 Google 电子表格中的单元格中,则提取多个值
Extract multiple values if present from cell in Google Spreadsheets
使用Google re2
https://github.com/google/re2/blob/master/doc/syntax.txt
来自像
这样的几行
- I love Rock
- I love Rock and scissors
- I hate paper
- I like Rock, paper and scissors
- 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 步生成正则表达式:
使用Google re2 https://github.com/google/re2/blob/master/doc/syntax.txt
来自像
这样的几行
- I love Rock
- I love Rock and scissors
- I hate paper
- I like Rock, paper and scissors
- 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 步生成正则表达式: