Perlについての質問箱 20箱目
■ このスレッドは過去ログ倉庫に格納されています
0402399
2005/11/20(日) 17:34:25>>338
> なぜこのような結果になるのでしょうか?
>>338 の前者は $text に対し s///g を一回だけ実行し、その処理過程で
複数の置換を行っている。後者は $text に対し s/// 自体を複数回実行し、
それぞれ一回ずつの置換を行っている。前者では二つ目以降のマッチ開始
位置が前回マッチの終了位置となるのに対し、後者では毎回文字列の先頭
にリセットされる為、結果も変わってくる。
>>356
ム板にもある。
正規表現 part2
http://pc8.2ch.net/test/read.cgi/tech/1131028296/
>>381 >>389
上の説明と >>399 参照。
>>393
>>394 で書かれているように、/g の処理中で逐次的に置換されるわけ
ではない。よって 2\n@\n3 ではなく2\n\n\n3 のまま。>>399 も参照。
>>397
違う事をしているのだから結果も違って当然。
(my $str = 'ababab') =~ s/ab/abc/g; # abcabcabc
# my $str = 'ababab';
# 1 while $str =~ s/ab/abc/; # 無限ループ!
■ このスレッドは過去ログ倉庫に格納されています