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

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

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

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

Q&A

解決済

3回答

4031閲覧

rubyで正規表現

kamatmt

総合スコア25

Ruby

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

0グッド

0クリップ

投稿2016/01/23 08:08

ruby

1#ファイル入力 2 3 sentence=[] 4 f=File.open("/usr/home/ch/????.txt","r:UTF-8") 5 f.each{|data| 6 sentence.push(data) 7 } 8 9puts sentence

ch内にある「1091.txt」や「1082.txt」などのテキストを読み込みたいです
「10*.txt」このような形で10以降何がきてもいいようにたいです。
お願いします。

また、正規表現についてわかりやすいサイトがあれが教えて下さい。

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

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

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

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

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

guest

回答3

0

ファイル名のワイルドカード展開については 既に回答がありますが、
ファイル名を正規表現で処理したいなら、次のようにする方法があります。

1.rb

ruby

1files = Dir.glob('*').select {|name| name =~ /\A10..\.txt\z/ } 2p files 3 4Dir.glob('*').each do |name| 5 if name =~ /\A10..\.txt\z/ 6 # ... name について処理をする... 7 p name 8 end 9end 10 11files = Dir.glob('*').select {|name| name =~ /10..\.txt/ } 12p files

実行例:

$ ls 1.rb 1011.txt 2001.txt x1011.txt 1001.txt 1011.txt.txt 2011.txt $ ruby 1.rb ["1001.txt", "1011.txt"] "1001.txt" "1011.txt" ["1001.txt", "1011.txt", "1011.txt.txt", "x1011.txt"]

↑で注意したいのは、 /10...txt/ という正規表現をつかった場合は、
余分なファイル名もマッチしてしまうということです。
/A /z を使って文字列の頭と最後も含めた表現にするとよいです。

投稿2016/01/23 14:51

katoy

総合スコア22324

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

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

0

Pathname.globを使うといいと思います。
参考: Ruby 2.3.0 リファレンスマニュアル: Pathname.glob
こんな感じで使います。

Ruby

1require "pathname" 2sentence = [] 3Pathname.glob("/usr/home/ch/10*.txt") do |path| 4 path.open do |file| 5 file.each do |data| 6 sentence << data 7 end 8 end 9end

投稿2016/01/23 08:25

raccy

総合スコア21733

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

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

0

ベストアンサー

書かれているプログラムと、正規表現は何の関係もありません。

ch内にある「1091.txt」や「1082.txt」などのテキストを読み込みたいです

「10*.txt」このような形で10以降何がきてもいいようにたいです。

「10*.txt」のファイル名のファイルを全部読むと言うことなら、

Ruby

1sentence=[] 2Dir.glob("/usr/home/ch/10*.txt").each do |fname| 3 open(fname,"r:UTF-8") do |f| 4 f.each do |data| 5 sentence.push(data) 6 end 7 end 8end 9 10puts sentence

投稿2016/01/23 08:23

otn

総合スコア84423

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問