§7.6 文字列の分解と結合


作成日:2001/09/01(土)

ここまで正規表現に関する基本的なところを見てきましたが、この章の最後に、文字列の分解と結合について紹介します。

文字列の分解 - split関数 -

split関数は、引数として受け取った正規表現にマッチする物を全て見つけ出し、マッチした部分で文字列を分割し、マッチしなかった部分をリストにして返します(リストコンテキストで評価した場合)。 またスカラーコンテキストで評価すると、分割した文字列の個数を返します。

 $data = "name=can";
 ($name, $value) = split(/=/, $data);

 $items = split(/=/, $data);

上のスクリプトの最初の物は、$dataの中の文字列を=で分割し、分割したそれぞれを左辺のリストに代入します。 ですから$nameには文字列"name"が格納され、$valueには"can"が格納されます。 また次の例ではsplit関数をスカラーコンテキストで評価しているので、$itemsには2が格納されます。

split関数は、2番目の引数を省略すると特殊変数$_に対して処理を行います。

 split(/=/);
 #$_に対して処理をする

また第1引数も省略すると、$_に対して、/\s+/(空白文字が1個以上続くようなパターン)で分割をします。

 split;

split関数によって分割される項目の数を制限することも出来ます。 それには次のように、split関数の3番目の引数として、制限したい項目の数を書きます。

 $data = "can,sendai,Japan,012-3456,022-987-6543";
 ($name, $city, $sonota) = split(/,/, $data, 3);

上のようにして、分割する項目の数を3に限定すると、$nameには"can"が格納され、$cityには"sendai"が格納され、$sonotaには"Japan,012-3456,022-987-6543"が格納されます。 split関数で分割したデータのうちの一部分だけが必要な場合に使えそうですね。

文字列の結合 - join関数 -

join関数は、split関数とは反対に、引数で受け取った文字列を、同じく引数で受け取った文字列のリストの間にはさんで、1つの文字列にしてくれます。

 $data = join('=', "name", "can");

上の例では"name"と"can"を=でつなげています。 $dataには"name=can"が格納されます。 join関数の第1引数は正規表現ではなく、普通の文字列だということに注意してください。

これで第7章はおしまいです。 正規表現にはもっと細かく難しい物がたくさんありますので、いろいろと実験を繰り返してみてください。 次の章ではファイルの読み書きやファイルロックなど、ファイルの操作に関する基本的なところを見て行きます。


「§7.5 置換演算子と変換演算子」へ 「§8.1 ファイルのオープンとクローズ」へ
ソフトバンク パブリッシング株式会社

Copyright (C) can All Rights Reserved
e-mail:ishiki@mrj.biglobe.ne.jp