KAIHATSUGIKEN GROUP
*********************************************************************************
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と値が入ります。
***********************************************