我有一个推文电子表格,想要在Google表格中隔离用户名。不知何故,在R或其他语言中工作的正则表达式并没有在那里完成工作。
一个例子:
RT @Neromoto: @cazainfractor inconsciente agresiva y poco ciudadana conductora
期望的输出:
@Neromoto
@cazainfractor
我试过这个:REGEXEXTRACT(B1,(^|[^@\w])@(\w{1,15})\b)
。
答案 0 :(得分:2)
首先,您的(^|[^@\w])@(\w{1,15})\b
正则表达式模式必须放在字符串文字中,即双引号。然后请注意,将输出每个捕获组,您可能希望通过将(
替换为(?:
来使第一个组不捕获。此外,最后一个\b
是多余的,在最后\w
匹配后,将会有字符串结尾或非字符字符。
我宁愿建议
=REGEXEXTRACT(B1,"\B@\w{1,15}")
或者
=REGEXREPLACE(B1,"(\B@\w{1,15})\s*|.","$1 ")
<强>详情:
\B
- 一个非字边界(即@
之前,可以是字符串的开头或非字的字符)@
- @
字符\w{1,15}
- 1到15个单词字符(如果您不关心长度,请将{1,15}
替换为+
)第二个正则表达式的细节:
(\B@\w{1,15})\s*
- 第1组在非字边界位置捕获@
,1到15个字字符,然后是0 +空格(在替换中,$1
反向引用插入找到的提到回到结果字符串)|
- 或.
- 任意1个字符。