1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現でTwitterURLからユーザー名とstatusを取得する【Ruby】

Last updated at Posted at 2020-02-06

#TwitterのURLについて

これがツイートのURLの例
https://twitter.com/yurinolog/status/1209290280328814593?s=20

httpsから始まり3つ目のyurinologがユーザー名、5つ目の数字の羅列がstatusと呼ばれる各ツイートに割り振られる番号。(語尾のs=20の正体はいまだに分からない。知ってる方いらしたら教えて頂きたいです)

#書いたコードと結果

url = "https://twitter.com/yurinolog/status/1209290280328814593?s=20"

/(https|http):\/\/(twitter.com)\/([A-Za-z0-9_]*)\/(status|statues)\/(\d+)/.match(url)

puts $1 #=> http or https
puts $2 #=> twitter.com
puts $3 #=> user
puts $4 #=> status or statuses
puts $5 #=> status

#使用した正規表現

正規表現は数度使ったことがあるが、抽象的というかコードから結果がイメージしにくく知識はほぼ皆無なので、一応復習しておくことにする。

##キャプチャ()と$について

キャプチャ(後方参照)と言うのは正規表現でマッチした部分の1部を取り出すときに使う。

取り出す予定の部分を()で囲うことで$1$2といった風に取り出すことが出来る。


/(https|http):\/\/(twitter.com)/.match(url)
puts $2 #=> twitter.com

##いくつかの候補から選択する
今回の場合はhttpsかhttpか、statusかstatusesとなる。


/(https|http)/.match(url)

候補となる値を|で区切る。

##英数字とアンダーバーについて
今回は[A-Za-z0-9_]と書いた。
他にも
[A-Z]
[a-z]
[0-9]
と分けて表現できる。

あとstatusの数字の表現には/d+を使ってみた。

*+は同じ文字や単語を繰り返しマッチさせたいと気に使う。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?