[解決済み] Ruby Regexpのグループマッチ、1行で変数の割り当て
2022-06-26 22:24:16
質問
現在、文字列を複数の変数に展開しようとしています。文字列の例
ryan_string = "RyanOnRails: This is a test"
この正規表現で、3つのグループで照合してみました。
ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i)
さて、各グループにアクセスするには、次のようにしなければなりません。
ryan_group[0][0] (first group) RyanOnRails
ryan_group[0][1] (second group) :
ryan_group[0][2] (third group) This is a test
これはかなり馬鹿げていて、私が何か間違ったことをしているように感じます。私はこのようなことができることを期待しています。
g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i)
これは可能なのでしょうか?それとも私がやっている方法よりも良い方法があるのでしょうか?
どのように解決するのですか?
あなたは
scan
はほとんど意味をなさないので、必要ありません。使用できるのは
String#match
を返します。
MatchData
オブジェクトを返すので、次に
#captures
を呼び出してキャプチャーの配列を返します。このようなものです。
#!/usr/bin/env ruby
string = "RyanOnRails: This is a test"
one, two, three = string.match(/(^.*)(:)(.*)/i).captures
p one #=> "RyanOnRails"
p two #=> ":"
p three #=> " This is a test"
一致するものがない場合は注意が必要です。
String#match
はnilを返すので、このようにするとうまくいくかもしれません。
if match = string.match(/(^.*)(:)(.*)/i)
one, two, three = match.captures
end
とはいえ
scan
はこのためにほとんど意味をなしません。それはまだ仕事をします、あなたは最初に返された配列を平らにする必要があるだけです。
one, two, three = string.scan(/(^.*)(:)(.*)/i).flatten
関連
-
[解決済み] Rubyのフィボナッチ数列(再帰)
-
[解決済み] Ruby の `print` から bash スクリプトを呼び出して echo するにはどうしたらいいですか?
-
[解決済み] 構文エラー、予期しない ',', 期待する ')' 。
-
[解決済み] 配列からランダムに選択する方法は?
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] Rubyで複数行のコメント?
-
[解決済み] Sublime Text 2での正規表現検索置換
-
[解決済み】コマンドラインからRubyスクリプトに変数を渡す。
-
[解決済み】JavaScriptのString.indexOf()で正規表現ができるバージョンはありますか?
-
[解決済み】Regexで一部のグループのみを置換する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み】rubyの1e18という数字は何を意味するのか?
-
[解決済み] Rubyでファイル名を変更するには?
-
[解決済み] Rubyでランダムな文字列を生成する方法
-
[解決済み] ルビースリープやディレイは1秒以下?
-
[解決済み] マトリックスサムネーションチャレンジ
-
[解決済み] Rubyのダブルコロン `::` とは何ですか?
-
[解決済み] Capybaraを使ったドロップダウンでのオプションの選択方法
-
[解決済み] ルビー.天井と.床
-
[解決済み] Ruby 2.0.0p0 IRB警告。"DLは非推奨です。Fiddleをお使いください。"