• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ruby 正規表現の日本語とアルファベット)

ruby正規表現で日本語とアルファベットをマッチさせる方法

このQ&Aのポイント
  • プログラミング言語rubyの正規表現について質問です。日本語とアルファベットが混ざっている場合、どのような正規表現のパターンを作れば良いかわかりません。
  • 具体的には、下記の文字列をパターンマッチさせたいです。「|」はただの文字として扱いたいです。1行でひとかたまりです。
  • どなたか教えていただけないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答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 の部分はなくてもかまいません。

mizumi398
質問者

お礼

ありがとうございます!! とても参考になりました。 挑戦してみます。

その他の回答 (2)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答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」とに分けて取り出したいということではないでしょうか?

mizumi398
質問者

補足

補足1 rubyのバージョンは1.8です。 漢字の文字コードはシフトJISです。 補足2 データはtatsu99さんのおっしゃるとおり、 1行目:生うに|namauni|gold|420 2行目:甘えび|amaebi|red|120 のように並んでいます。 補足3 そうです。 1行のデータをgetsで読み込み、パターンマッチさせてデータのような文字列であった場合に、 splitメソッドでデータを4つに分けたいのです。 質問の説明が足りなくて申し訳ありません。 よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どんな正規表現でも「パターンマッチさせる」ことはできます. マッチングが成功するかどうかは別の話.

mizumi398
質問者

お礼

回答ありがとうございます。 パターンマッチというものがまだ良くわからない素人ですので 足りない部分が多々あります。

関連するQ&A

専門家に質問してみよう