質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

1240閲覧

URLから特定の数字だけ抜き取りたい Ruby

masaosan18

総合スコア65

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/14 09:50

URLから特定の部分だけを抜き取る記述を教えていただきたいです。

URL

https://page.auctions.yahoo.co.jp/jp/auction/463366619

このURLから最後の数字の部分だけ取得するとしたらどのような方法があるのかご教授いただきたいです。

このようなURLが複数同じ形式で存在しているときに最後の数字だけそれぞれ抜き取りたいです。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

このURLから最後の数字の部分だけ取得するとしたらどのような方法があるのかご教授いただきたいです。

正規表現を使えばできます

投稿2020/10/14 09:52

編集2020/10/14 09:52
y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現を使えば抜き出せるでしょう

ruby

1str = 'https://page.auctions.yahoo.co.jp/jp/auction/123456789/123' 2 3pp str.match(/\d{9}/).then(&:to_s) # => "123456789"

rubular などで試してみるのもいいかもしれません

なにか参考になれば幸いです

Link

投稿2020/10/14 13:42

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaosan18

2020/10/15 09:08

.then(&:to_s) これはどのような意味になるのでしょうか?
gouf

2020/10/15 09:14

あまり考えずに書いてしまいました 「then」は「yield_self」の alias で、振る舞いとしては「.to_s」を適用したのと同じ意味です
guest

0

ベストアンサー

以下でいかがでしょうか。
$1に数字が格納されます。

Ruby

1str = 'https://page.auctions.yahoo.co.jp/jp/auction/463366619' 2if str =~ //(\d+)$/ 3 p $1 4end

実行結果
"463366619"

'https://page.auctions.yahoo.co.jp/jp/auction/463366619/sample'
のようなケースは想定していません。もし、このようなケースもあるならその旨、補足してください。

投稿2020/10/14 10:24

編集2020/10/14 10:28
tatsu99

総合スコア5460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2020/10/14 11:45

それであれば if str =~ //(\d{9})(/|$)/ p $1 end のようになります。 但し、 https://page.auctions.yahoo.co.jp/jp/auction/999999999/463366619/1111111111 のような場合は、$1は999999999になります。(9桁の数字が2つあるため、最初の数字を採用) 上記のケースで463366619を取り出したいケースがあるなら、その旨、補足してください。 その場合は、複数ある9桁の数字のうち、最後の9桁の数字を採用ということになります。 (1行の正規表現では無理かもしれません)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問