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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

1346閲覧

(ruby)正規表現に関しての質問です

widget11

総合スコア221

Ruby

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/04/13 19:31

ある一文字が母音とmatchしたらtrue、しなかったらfalseを返したいのですがうまくいきません。。

a = "a" pry(main)> a.match?("/[aiueo]/") => false

このaという文字列がこのaiueoのいずれかに引っ掛かったらtrueを返すようにしたいのですが、正規表現の書き方がよくないのかfalseが帰ってきます。
どのように正規表現を書けば良いでしょうか?
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

Rubyでは、正規表現リテラルは/[aiueo]/のように書きます。"/[aiueo]/"は正規表現リテラルじゃなくて文字列リテラルです。

String#matchString#match?メソッドは引数に正規表現をとりますが、例外的(※)に文字列を与えても正規表現に変換してくれます。ただしそのまま正規表現にするので、"/[aiueo]/"は「2つのスラッシュに挟まれた母音1文字」になります。つまり、どうしても文字列で与えたければ、match?("[aiueo]")と書きます。

普通は正規表現リテラルで、match?(/[aiueo]/)と書きます。

※正規表現、文字列どちらも指定できるメソッドのほとんどでは、文字列を指定した場合はそのままの文字列として扱われます。例えば、`sub(".","@")は、「任意の1文字」ではなく「ピリオド」を置換します。

投稿2020/04/13 23:29

編集2020/04/13 23:33
otn

総合スコア84538

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

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

0

ベストアンサー

xxx.rb

ruby

1# frozen_string_literal: true 2 3TEST = %w[ 4 a 5 x 6 Ax 7 xy 8] 9 10TEST.each do |str| 11 ans = /[aiueo]/.match?(str.downcase) 12 puts("#{str} -> #{ans}") 13end 14

実行例
イメージ説明

参考情報
https://docs.ruby-lang.org/ja/latest/method/Regexp/i/match=3f.html

...
/R.../.match?("Ruby") # => true
...

投稿2020/04/13 20:50

編集2020/04/13 20:51
katoy

総合スコア22324

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

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

widget11

2020/04/13 23:22

レシーバーと引数が逆でしたか笑 ありがとうございます!
otn

2020/04/13 23:32

> レシーバーと引数が逆でしたか笑 違います。そういう問題では無い。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問