谷歌表单regexextract多个结果

kqqjbcuj  于 2023-06-07  发布在  其他
关注(0)|答案(3)|浏览(135)

字符串opposed to unit sales @d. Moving rev @i. Before used to down @test.
我需要提取所有在句号之前带有@标签的文本,包括@。
结果应为:@d @i @test
我可以用@([^\.]*)匹配所有的东西,但是我读到因为google sheet不做多重提取,我需要用" "替换除了我的模式之外的所有东西,然后分割得到结果。
我在生成一个公式时遇到了问题,该公式对除我的模式之外的所有内容都使用regexreplace

vxf3dgd4

vxf3dgd41#

您可以使用以下简单公式

=TRIM(REGEXREPLACE(C1,"(@\w+)|.", "$1 "))
  • 根据您的范围和语言环境调整公式)*

使用的功能:

sulc1iza

sulc1iza2#

通常接受的方法是使用REGEXREPLACE捕获所有匹配

=REGEXREPLACE(A1,"@\w+","($0)")

然后使用REGEXEXTRACT提取它们

=REGEXEXTRACT(A1,REGEXREPLACE(A1,"@\w+","($0)"))

如果字符串包含regex特殊字符,我们必须先转义它们

=REGEXEXTRACT(A1,REGEXREPLACE(REGEXREPLACE(A1,"[()\[\]{}|\\^$.+*?]","\\$0"),"@\w+","($0)"))
sf6xfgos

sf6xfgos3#

***regex way***:

=regexreplace(regexreplace(A2,"(@[^@\.]+)\.( )?|.","$1$2")," $",)

***non-regex solution** 加入单个单元格 *):

=let(Σ,split(A2," "),textjoin(" ",1,index(if((left(Σ)="@")*(right(Σ)="."),substitute(Σ,".",),))))

***non-regex solution** 在单元格中拆分 *):

=let(Σ,split(A2," "),torow(index(if((left(Σ)="@")*(right(Σ)="."),substitute(Σ,".",),)),1))

相关问题