2016-08-20 16 views
0

私は見つけられたものすべてを使い果たしてしまいました。私はTwitterの投稿の行がある.txtを持っていて、テキストに記載されている@handle以外のすべてを削除しようとしています。例えばRegexのTwitterハンドル以外のすべてのテキストを選択しようとしています

行1:このテキストはHandle2 @とHandle3

@のために意味されることになる:

これは、ハンドル1

行2 @つぶやきのテキストです

行1:@ Handle1

Row2:@ Handle2 @ Handle3

彼らはスペースなしですぐにそれらの後にコロンやピリオドを持っている場合でも、セット内のすべてのハンドルのために働く

(しばしば起こる):私のようにハンドルを選択するために、正規表現の式を作ってみた

私はそれを否定先読みコマンドを追加してみました:(?!(@[^\W]*))

しかし、私は本当にそれを動作させるために追加するには、他に何を知りませんか?

ありがとうございます!

+0

こんにちは、間違った結果を出すいくつかのつぶやきを追加してください。どのような結果が得られますか – smead

+0

['s.gsub(/(@ \ w +)|(?:(?!@ \ w +) 。)*/m、 '\ 1').strip'](http://ideone.com/1P1j6G) –

答えて

2

したがって、各行をループして、ツイッターハンドルをスキャンすることができます。例えば

str = "This text is meant for @Handle2 and @Handle3" 

str.scan(/@\w+/).to_a #=> ["@Handle2", "@Handle3"] 

次にあなたが欲しいしかし、配列を操作することができます。

\wは任意の英数字およびアンダースコア文字ですが、他の文字が必要な場合は修正できます。

関連する問題