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]
必要以上にメモリに格納しないとか、過剰にマッチしないとか考えると、
tweet_url =~ /^https?:\/\/twitter\.com\/(?:.*)\/status(?:es)?\/(\d+)$/
の$1で取れるかと思います。
もし必ずtweet個々のURLだとわかっているなら
tweet_url =~ /\/(\d+)$/
の$1、もしくは
tweet_id = tweet_url.split(“/”).last
で十分かもしれません。