KAIHATSUGIKEN GROUP

PERL PROGRAMMING LANGUAGE



*********************************************************************************
14 $&($MATCH)について
*************************
$&($match)は正規表現にマッチした部分を全部取り出します。
マッチした部分全部ではなく、その一部を取り出すことも出来ます。
そのためには正規表現の中の取り出したい部分を () で囲みます。

例えば次の正規表現は、小文字が1文字以上有り、:が有り 
任意の文字が0文字以上あるという意味です。
"name:Suzuki"の様にキーと値を:で区切ったような文字列にマッチします。

[a-z]+:.*

この:野前のキーボブ分と後の値の部分を取り出したい場合は、その部分を()で囲みます。
([a-z]+):(.*)

()で囲んだ部分は前から順番に$1,$2,......と言う特別な変数に代入されます。
例えば

while(<>){
	chomp;
	if(/([a-z]+):(.*)/){
		print"key=$1,value=$2\n";
	}else{
		print"not match\n";
	}
}

実行すると

name:Suzuki	ユーザー入力
key=name,value=Suzuki

age:4		ユーザー入力
key=age,value=4


となります。

()が何十にもなっているときは括弧の順番に数えていきます。
(([a-z]+):(.*))
となっていれば 順番に $1,$2,$3と値が入ります。

***********************************************