我有一大堆文字可能包含社交媒体帐户。我想要没有尾随空格或期间的帐户。这是使用谷歌表和regextract
。到目前为止,我仍然得到了返回的时间段(如果它存在)。我正在搜索@
,然后想要将所有文字都返回到空格或句点。
这是我的公式:
=if(REGEXMATCH(E2,"@"),REGEXEXTRACT(E2,"@.*?\s"),"No social handle")
E2
是我正在搜索的单元格。这是一个示例文字:Former foo, now blah blah blahr @socialaccount. blah blah blah blah foo.
答案 0 :(得分:1)
您可以这样使用:
=if(REGEXMATCH(E2,"@"),REGEXEXTRACT(E2,"@.+?\b"),"No social handle")
它捕获所有非贪婪的东西,直到找到单词边界\b
。我在自己的Google Spreadsheets中测试过它。
一些解释
公式REGEXEXTRACT
的工作方式是提取从正则表达式模式的开头到最后一个字符到正则表达式模式的所有内容,例如:
REGEXEXTRACT("bla ble bli", "b?e")
这会在给定字符串中找到以b
开头且以e
结尾的内容,因此会返回ble
REGEXEXTRACT("bla bleble bli", "b.+e")
这会在给定字符串中找到以b
加上任何字符(贪婪)开头的内容,直到找到e
,因此它会返回bleble
REGEXEXTRACT("bla bleble bli", "b.+?e")
这将在给定字符串中找到以b
加上任何字符(非贪婪)开头的任何内容,直到第一次出现e
,因此它将返回{{ 1}} 特殊ble
被称为Word Boundary(详细文章,享受)
我提供的正则表达式的完整解释:
\b