
プログラミング言語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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cpadで文字化け
-
jsp~jspにhiddenを使って変数...
-
C言語 exitの使い方
-
VB6.0-整数と余りを求める
-
フォームを開くときに、コンボ...
-
COLUMN(1:1)の意味を教え...
-
VBAでダブルコーテーション入り...
-
配列の値を置換するにはどうす...
-
Excel-vba 文字列と変数を...
-
[VBS]変数を定数に変換する方法...
-
フリーランタイマーの時間差分...
-
vbaで極大値を抽出する方法
-
数字の位ごとの値を表示するプ...
-
足して100になるような乱数のア...
-
VBAのWorksheetFunctionの引数...
-
Variant型で宣言してるのにEmpt...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
変数名の間接指定
-
データ構造のmapとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
Accessで文字列のバイト数読み込み
-
ファイル名について
-
tomcat7 web.xml のエンコード
-
C言語で全角文字を扱いたいので...
-
VC2008+Qtの文字化け
-
Kシェルでの桁数取得
-
VBA シート上にドロップダウン...
-
Cpadで文字化け
-
スプレッドシートの関数
-
VBでまた行き詰まってしまいました
-
Ruby 文字コード判別
-
open-uriを用いた、ウェブ上か...
-
アンダーバーとバックスラッシュ
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
おすすめ情報