字符串opposed to unit sales @d. Moving rev @i. Before used to down @test.我需要提取所有在句号之前带有@标签的文本,包括@。结果应为:@d @i @test我可以用@([^\.]*)匹配所有的东西,但是我读到因为google sheet不做多重提取,我需要用" "替换除了我的模式之外的所有东西,然后分割得到结果。我在生成一个公式时遇到了问题,该公式对除我的模式之外的所有内容都使用regexreplace。
opposed to unit sales @d. Moving rev @i. Before used to down @test.
@d @i @test
@([^\.]*)
" "
regexreplace
vxf3dgd41#
您可以使用以下简单公式
=TRIM(REGEXREPLACE(C1,"(@\w+)|.", "$1 "))
使用的功能:
REGEXREPLACE
TRIM
sulc1iza2#
通常接受的方法是使用REGEXREPLACE捕获所有匹配
=REGEXREPLACE(A1,"@\w+","($0)")
然后使用REGEXEXTRACT提取它们
REGEXEXTRACT
=REGEXEXTRACT(A1,REGEXREPLACE(A1,"@\w+","($0)"))
如果字符串包含regex特殊字符,我们必须先转义它们
=REGEXEXTRACT(A1,REGEXREPLACE(REGEXREPLACE(A1,"[()\[\]{}|\\^$.+*?]","\\$0"),"@\w+","($0)"))
sf6xfgos3#
***regex way***:
regex way
=regexreplace(regexreplace(A2,"(@[^@\.]+)\.( )?|.","$1$2")," $",)
***non-regex solution**( 加入单个单元格 *):
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))
3条答案
按热度按时间vxf3dgd41#
您可以使用以下简单公式
使用的功能:
REGEXREPLACE
TRIM
sulc1iza2#
通常接受的方法是使用
REGEXREPLACE
捕获所有匹配然后使用
REGEXEXTRACT
提取它们如果字符串包含regex特殊字符,我们必须先转义它们
sf6xfgos3#
***
regex way
***:***
non-regex solution
**( 加入单个单元格 *):***
non-regex solution
**( 在单元格中拆分 *):