• ベストアンサー

正規表現でのマッチング

連想配列%hushがあります。 %hushの中のキーが「a何とか」、つまり a0、a1、a2、a3、・・・ の値だけを、配列@arrayに格納します。 つまり  $array[0]=$hush{'a0'}  $array[1]=$hush{'a1'}  $array[2]=$hush{'a2'}  $array[3]=$hush{'a3'} ・・・ といった感じにしたいのですが、 「a何とか」は正規表現を用いて  a.* と表現できます。 ってここまでは手元の本で分かったのですが、マッチングのif文をどう書けばいいんだよ!  if($key==a.*) と書いてもうまくマッチしてくれないんで、a.*を""で括ってみたり()で括ってみたりするものの相手にされず・・・ 手元の本は「こういう場合正規表現ではこう書けば良くて、これをマッチングさせれば良い」みたいなことを書いていますが、マッチングのさせ方は書いていません。 プログラムの文法書を読むと、条件分岐の仕方は書いていますが、==演算子の右側が正規表現だった場合の使い方は書いていません。 あるいは、正規表現の場合のマッチングはif文などを用いないのでしょうか? だったら正規表現の本にマッチングの文法を書いていますよね!? なんだかんだでマッチングがうまくいかないのです。 この場合、どう記述すればいいのでしょうか? お手数をお掛けします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

たとえば、Perlだと、 $key =~ /^a/ とかきますし、 Powershellだと、$key -match '^a' と書きます。 (a.*が「aから始まる文字列」ということを望んでいるのでしたらですが) 正規表現は一般的な概念です。文字の連なりの規則を記述するためのものです。 実際にそれをどうプログラムすればよいかは、お使いのプログラミング言語及び言語処理系によって変わってきます。 なので、 (1)正規表現について理解する。 (2)プログラミング言語及び言語処理系について理解する。 ――の二つの勉強が必要になります。 自分が使ったことのある正規表現が利用可能なプログラミング言語でマッチング方法を説明していないものは見たことがないので、まずは言語リファレンス等をもう一度読み直してみては。

makoji
質問者

お礼

言語はPerlです。Perlの板に書き込むはずが間違えてこちらに来てしまいました。Perlの板のつもりだったので、言語を指定しませんでした。失礼しました。 ありがとうございます。

その他の回答 (2)

  • Evreux
  • ベストアンサー率29% (225/774)
回答No.2

なんの言語かわかりませんが、その言語においてif文で正規表現を使うことがおかしいのでは? 正規表現にマッチするかどうかの処理を行ったあと、if文で結果を判定するのでは? お使いの言語の正規表現を使ったサンプルプログラムを探してみては?

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

正規表現をどう書くか、どう使うかは言語によります。 言語は何ですか?記号からして、Perlっぽい雰囲気なので、Perlですかね? if( $key =~ /a.*/) Perlの入門書を読みましょう。