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が取得できた。
[ruby]
tweet_url = “http://twitter.com/#!/ysakaki/status/129076541425586176”
tweet_url =~ /^http(s*):\/\/twitter.com\/(.*)\/(status|statuses)\/(\d+)$/
puts $4
129076541425586176
[/ruby]

1 COMMENT

ikm

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

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

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

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

の$1、もしくは

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

で十分かもしれません。

現在コメントは受け付けておりません。