在Google工作表中重新提取以查找Twitter用户名

时间:2016-10-26 21:44:48

标签: regex google-sheets

我有一个推文电子表格,想要在Google表格中隔离用户名。不知何故,在R或其他语言中工作的正则表达式并没有在那里完成工作。

一个例子:

RT @Neromoto: @cazainfractor inconsciente agresiva y poco ciudadana conductora

期望的输出:

@Neromoto
@cazainfractor

我试过这个:REGEXEXTRACT(B1,(^|[^@\w])@(\w{1,15})\b)

1 个答案:

答案 0 :(得分:2)

首先,您的(^|[^@\w])@(\w{1,15})\b正则表达式模式必须放在字符串文字中,即双引号。然后请注意,将输出每个捕获组,您可能希望通过将(替换为(?:来使第一个组不捕获。此外,最后一个\b是多余的,在最后\w匹配后,将会有字符串结尾或非字符字符。

我宁愿建议

=REGEXEXTRACT(B1,"\B@\w{1,15}")

enter image description here

或者

=REGEXREPLACE(B1,"(\B@\w{1,15})\s*|.","$1 ")

enter image description here

<强>详情:

  • \B - 一个非字边界(即@之前,可以是字符串的开头或非字的字符)
  • @ - @字符
  • \w{1,15} - 1到15个单词字符(如果您不关心长度,请将{1,15}替换为+

第二个正则表达式的细节:

  • (\B@\w{1,15})\s* - 第1组在非字边界位置捕获@,1到15个字字符,然后是0 +空格(在替换中,$1反向引用插入找到的提到回到结果字符串)
  • | - 或
  • . - 任意1个字符。