2016-10-26 8 views
1

私はつぶやきのスプレッドシートを持っており、Googleスプレッドシートのユーザー名を特定したいと思っています。どういうわけか、Rや他の言語で動作する正規表現はそこで仕事をしていません。Googleシートでregextractを使ってツイッターのユーザー名を探す

例:

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

所望の出力:REGEXEXTRACT(B1,(^|[^@\w])@(\w{1,15})\b)

@Neromoto 
@cazainfractor 

私はこれを試してみました。

+0

Rでは、バックスラッシュを二重にする必要があるC文字列リテラルで正規表現を定義します。 Googleスプレッドシートでは、単一のバックスラッシュを使用する必要があります。 Rで動作し、Googleスプレッドシートで動作しない正規表現とは何ですか? (Rは、gsubfnによって使用されるTclを考慮した場合、3つ(または使用するパッケージ/オプションに応じて異なる正規表現の味)があるため、特定のケースです)。 –

+0

私はこのREGEXEXTRACTを試しました(B1、(^ | [^ @ \ w])@(\ w {1,15})\ b) – supercontra

+1

'REGEXEXTRACT(B1、" \ B @ \ w {1,15} ")'。あなたが本当に '@@'で文字列を持っていて、あなたのその正規表現を使う必要があるなら、最初のグループを '' REGEXEXTRACT(B1、 "(?:^ | [@ @ w])(@ w {1,15}) ")'それはあなたに最初の試合、BTWを得るでしょう。おそらく、実際に 'REGEXREPLACE'を使用したいでしょうか? –

答えて

2

最初に、(^|[^@\w])@(\w{1,15})\b正規表現パターンを文字列リテラル(二重引用符)に入れる必要があります。その後、すべてのキャプチャグループが出力されることに注意してください。最初のグループにキャプチャしないようにするには、((?:に置き換えてください。また、最後の\bが冗長であり、最後の\wがマッチした後に、文字列の終わりまたは非ワードのcharがあります。

私はむしろ

=REGEXEXTRACT(B1,"\[email protected]\w{1,15}") 

enter image description here

それとも

=REGEXREPLACE(B1,"(\[email protected]\w{1,15})\s*|.","$1 ") 

enter image description here

詳細をお勧めしたい:

  • \B - 非単語境界(すなわち、@前に、文字列のいずれかの開始または非単語文字が存在し得る)
  • @から@チャー
  • \w{1,15}から1ワード15文字(あなたが+{1,15}を置き換え、長さを気にしない場合)

そして、第二の正規表現の詳細:

  • (\[email protected]\w{1,15})\s* - - 非単語境界位置、1〜15ワード文字、次いで0+空白(置換で、$1後方参照が見つかっバック結果の文字列への言及挿入)
  • |
  • @を捕捉グループ1または
  • . - 任意の1文字
関連する問題