再度質問 TwitterのRT、返信を正規表現であらわすには?

すみません、完全に解決できなかったので 改めて質問します。
Twitterを使ったプログラム作成中なのですが 
RT、誰かに対する返信 (RT ユーザー名:) (@ユーザー名) を正規表現を使って取り除こうとしていますがうまくいきません。
前回の質問を参考に、
/(RT )?@([^:])+:/i
としたところ、だいたいうまく行っていたのですが、ユーザー名に_(アンダースコア)などはいる際 うまく正規表現チェックされなかったようなのです。

もし分かる方、教えていただけませんか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/01/20 10:43:55
  • 終了:2012/01/20 11:59:23

ベストアンサー

id:kodairabase No.2

kodairabase回答回数661ベストアンサー獲得回数802012/01/20 11:46:21

ポイント100pt

空白の挿入などバリエーションがあるので、下記のように指定してみてください。

/[RQ]T[ ]+?@[a-z0-9_]+[ :]+/i

その他の回答(1件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252012/01/20 11:09:05

ポイント100pt

非公式RTは人が手入力するものなので表記の揺れがあります。

  • 特に質問にある正規表現だと最後のコロンが必須になっているのが気になりました。付けない人もいます。
  • RTじゃなくQTと付ける人もいるのでそれも対応
  • screen_name部分は後のコロンに頼らないよう利用可能文字の列挙に書き換え
  • カッコを付けてグルーピングする意味は無いのでカッコは削除
/[QR]T ?@[a-z0-9_]+:?/i

試してないですが多分コレで改善されると思います。

id:kodairabase No.2

kodairabase回答回数661ベストアンサー獲得回数802012/01/20 11:46:21ここでベストアンサー

ポイント100pt

空白の挿入などバリエーションがあるので、下記のように指定してみてください。

/[RQ]T[ ]+?@[a-z0-9_]+[ :]+/i
  • id:goodbabies
    ありがとうございます!ただ、いずれも@ユーザー の、ただのいずれもただの返信の場合が取り除くことが出来ませんでした、そこは私のプログラム上の問題かもしれませんね。
    /[QR]T ?@[a-z0-9_]+:?/i
    /@[a-z0-9_]+:?/i

    2回に別けて処理実行したところ、自分の意図したことがそのままできました。感謝です。
  • id:TransFreeBSD
    /([QR]T )?@[a-z0-9_]+:?/i
    かと。ただ、メアドに誤爆しますが。
  • id:y-kawaz
    あ、そうかRT,QTを付けないパターンも必要なのか。なら頭のカッコ?は必要ですね。
    もしくは只の@付き返信の対応は以下のように行頭のときだけにしておいて、文中の場合はRT,QT付きのみ対応にしておけばメアドの誤爆は避けられるかも?

    /(^|[QR]T )@[a-z0-9_]+:?/i
  • id:rouge_2008
    ツイートにメールアドレスを含める人はあまりいないと思いますから、たぶん大丈夫そうですね。
    先頭がRT(QT)または@返信で始まる場合は、以下で両方削除できるように思いますが・・・

    /^([QR]T\s?:?\s?)?@[a-z0-9_]+:?/i

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません