TwitterのURLからstatusを抜き出す正規表現

tweetのURLからstatusを抜き出す正規表現を考えていた。

tweetのURLには幾つか種類があって基本的に次の4つの要素とその組み合わせのようだ。

  • 昔の書式:
    http://twitter.com//ysakaki/status/129076541425586176
  • #!が挟まる書式:
    http://twitter.com/#!/ysakaki/status/129076541425586176
  • statusじゃなくてstatusesな書式:
    http://twitter.com/#!/ysakaki/statuses/129076541425586176
  • 更にhttps対応した書式:
    https://twitter.com/#!/ysakaki/statuses/129076541425586176

Rubyで言うと下記で(\d+)の取得結果$4でstatusが取得できた。

tweet_url = "http://twitter.com/#!/ysakaki/status/129076541425586176"
tweet_url =~ /^http(s*):\/\/twitter.com\/(.*)\/(status|statuses)\/(\d+)$/ 
puts $4
129076541425586176

One Response to “TwitterのURLからstatusを抜き出す正規表現”

  1. ikm より:

    必要以上にメモリに格納しないとか、過剰にマッチしないとか考えると、

    tweet_url =~ /^https?:\/\/twitter\.com\/(?:.*)\/status(?:es)?\/(\d+)$/

    の$1で取れるかと思います。
    もし必ずtweet個々のURLだとわかっているなら

    tweet_url =~ /\/(\d+)$/

    の$1、もしくは

    tweet_id = tweet_url.split(“/”).last

    で十分かもしれません。