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

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

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

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

Q&A

解決済

3回答

1121閲覧

MatchDataをStringに

josan

総合スコア24

Ruby

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

0グッド

0クリップ

投稿2018/11/12 05:28

get //api/v2/isbn/(\d{13})/ do
content_type 'application/json'
path_info = request.path_info
fullpath = request.fullpath
url = request.url
puts path_info
puts fullpath
puts url

content = fullpath
puts content.class
pattern = '(\d{13})'
puts pattern.class
result = content.match(pattern)

上記
正規表現でマッチした結果
resultがMatchData型ですが、String型にする方法がありますか?
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

まず気になること

get //api/v2/isbn/(\d{13})/ do

読みづらいのでURLを正規表現にかける際には%記法を用いて

rb

1get %r{/api/v2/isbn/(\d{13})} do

をオススメします。


String#[]

self[regexp, nth = 0] -> String
slice(regexp, nth = 0) -> String
正規表現 regexp の nth 番目の括弧にマッチする最初の部分文字列を返します。
nth を省略したときや 0 の場合は正規表現がマッチした部分文字列全体を返します。
正規表現が self にマッチしなかった場合や nth に対応する括弧がないときは nil を返します。

を用いる事で

result = content.match[/(\d{13})/, 1]

と、できます。

どうしても、patternが文字列である必要があるのならば
Regexp.compileを用い

rb

1pattern = '\d{13}' 2result = content[Regexp.compile(pattern)]

と、なります。

投稿2018/11/12 05:44

編集2018/11/12 05:48
asm

総合スコア15147

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

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

josan

2018/11/12 06:17

ご回答ありがとうございます。 勉強しました!!
guest

0

ベストアンサー

result[0]でマッチした全体が取れます。

投稿2018/11/12 05:34

maisumakun

総合スコア145183

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

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

josan

2018/11/12 05:42

解決しました。ありがとうございます。
guest

0

content = fullpath
puts content.class
pattern = '(\d{13})'
puts pattern.class
result = content.match(pattern)
puts result[0].class
puts result[0]

String型にできます

投稿2018/11/12 05:44

josan

総合スコア24

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問