プログラミング言語rubyの正規表現について質問です。
大学の授業でrubyをやっているのですが、
下記の文字列をパターンマッチさせる方法がわかりません。
日本語とアルファベットが混ざっているときに
どのような正規表現のパターンを作ったらよいかわかりません。
「|」はただの文字として扱いたいです。
1行でひとかたまりです。
どなたか教えてくださいませんか。
よろしくお願いします。
↓ネタ|ネタのローマ字表記|皿の色|値段 の順に並んでいます。
生うに|namauni|gold|420
甘えび|amaebi|red|120
さわら|sawara|green|180
ねぎとろ|negitoro|green|180
さんま|sanma|green|180
納豆巻|nattomaki|red|120
いくら|ikura|blue|240
とり貝|torigai|gold|420
こはだ|kohada|red|120
つぶ貝|tsubugai|green|180
たらこ|tarako|red|120
赤貝|akagai|blue|240
ひらめ|hirame|gold|420
サーモン|salmon|blue|240
しまあじ|shimaaji|blue|240
中とろ|chuutoro|gold|420
No.3ベストアンサー
- 回答日時:
#2です。
以下のようなスクリプトを書いて実行してください。
--------------------------------
fh = open("data.txt")
while line = fh.gets
#もしデータに期待しない文字列を含むものがあるなら、スキップする
# 期待する文字列は、3つの|が存在し、各々の|の両端に|以外の文字が1文字以上存在すること
if /^[^|]+\|[^|]+\|[^|]+\|[^|]+$/ !~ line
#上記条件の文字列でないなら、次の行へ移る
next
end
#改行文字を削除する
line.chomp!
# |で分割する
elm = line.split("\|")
# 4つの部分に分かれるので、それらを印字する
print elm[0],"\n"
print elm[1],"\n"
print elm[2],"\n"
print elm[3],"\n"
end
--------------------------------
データは、data.txtという名称のファイルに格納されているものとします。
起動オプションで -Ksを指定してください。(文字コードの指定)
コマンドを実行したディレクトリと同じ場所にに、このdata.txtをおいて実行してください。
4つの個々の部分が、画面に表示されます。
なお、データが全て、例に出されたようなクリーンなデータだけなら、
if /..../ !~ line
end
の部分はなくてもかまいません。
No.2
- 回答日時:
補足要求1:
質問する場合は、rubyのバージョーン(1.8,1.9等)と漢字の文字コード(シフトJIS,UTF-8,EUC等)を提示してください。それらにより、回答が異なる場合がありますので。
補足要求2:
今回の質問で、データは以下のようにならんでいるのでしょうか?
1行目:生うに|namauni|gold|420
2行目:甘えび|amaebi|red|120
補足要求3:
また、上記の文字列にマッチしたとして、本当になさりたいことは、
生うに|namauni|gold|420 を
「生うに」と「namauni」と「gold」と「420」とに分けて取り出したいということではないでしょうか?
この回答への補足
補足1
rubyのバージョンは1.8です。
漢字の文字コードはシフトJISです。
補足2
データはtatsu99さんのおっしゃるとおり、
1行目:生うに|namauni|gold|420
2行目:甘えび|amaebi|red|120
のように並んでいます。
補足3
そうです。
1行のデータをgetsで読み込み、パターンマッチさせてデータのような文字列であった場合に、
splitメソッドでデータを4つに分けたいのです。
質問の説明が足りなくて申し訳ありません。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- 英語 英語の関係代名詞の問題について Monday is the day ( ) we feel blue 5 2022/06/26 13:57
- 数学 無理数の数字の組み合わせ。無限の意味について 5 2022/05/28 22:53
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- 日本語 意味とは何か? どこにあるのか?(Ⅱ) 4 2022/04/21 13:35
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- 地震・津波 TVドラマ『日本沈没』(1974年)第14回では北海道で4月19日に起きる地震の到来を表現している? 1 2023/03/26 01:41
- 日本語 日本人の大半は英語が難しい言語だと感じるそうですが 8 2023/04/14 18:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
void lcd_str(unsigned char* p...
-
C言語で全角文字を扱いたいので...
-
平均、最大値、最小値を表示す...
-
配列の値を置換するにはどうす...
-
エクセルのマクロについて教え...
-
だれがとけるの?
-
rand()に関して
-
C言語 exitの使い方
-
【VBA】複合代入演算子
-
RichTextBoxの改行を認知してく...
-
vba 最大値 条件分岐
-
関数で複数の値を戻り値として...
-
HTML上の2つの連動するプルダウ...
-
エクセルへのデータの貼付時に...
-
selectの意味
-
processing エラーで、 "cannot...
-
エラーの意味は? Lvalue req...
-
足して100になるような乱数のア...
-
リソースのコントロールについて
-
Accessコンボボックスにレコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
C言語で全角文字を扱いたいので...
-
Accessで文字列のバイト数読み込み
-
VBA シート上にドロップダウン...
-
セル内の一部文字列を消去のマクロ
-
アンダーバーとバックスラッシュ
-
VC2008+Qtの文字化け
-
英数半角文字と「-」を指定する...
-
スプレッドシートの関数
-
rubyの正規表現で"["を使いたい...
-
エクセルで数字の変換
-
UTF8が16進文字列に化ける(...
-
文字数の多い単語だけ抽出(多...
-
PHPで特定の変数値を取り出す
-
プロキシを使うプログラムでエ...
-
正規表現で英(大小)と数字を必...
-
ruby 正規表現の日本語とアルフ...
-
Ruby言語にて、全角カナ⇔半角カ...
-
void lcd_str(unsigned char* p...
-
Kシェルでの桁数取得
おすすめ情報