ツイートからリツイート キーワードとユーザー名を抽出する正規表現に取り組んでいます。これは、仕事をするためのかなりひどい正規表現の例です:
tweet='foobar RT@one, @two: @three barfoo'
m=re.search(r'(RT|retweet|from|via)\b\W*@(\w+)\b\W*@(\w+)\b\W*@(\w+)\b\W*',tweet)
m.groups()
('RT', 'one', 'two', 'three')
繰り返し\b\W*@(\w+)\b\W*
パターンを圧縮して可変数にして、@three の後に @four を追加すると、それも抽出されるようにしたいです。これを繰り返すために多くの順列を試みましたが、+
失敗しました。
私はまた、これが次のようなもののために働くことを望みます
tweet='foobar RT@one, RT @two: RT @three barfoo';
パターンが重ならない場合はre.finditer で実現できます。(パターンが重複するバージョンがあるため、最初の RT のみが取得されます。)
どんな助けでも大歓迎です。ありがとう。