Perlについての質問箱 30箱目at TECHPerlについての質問箱 30箱目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト400:デフォルトの名無しさん 07/05/01 22:01:18 せっかく書いたんだからたぶんとかいってないで動かしてみるべきだな。 401:395 07/05/01 22:02:38 すみません、やっぱ問題がありました。置換位置\Gが正規表現に含まれている と、置換される文字列に改行が含まれている際に、オプション"g"をつけても 複数置換してくれなくなってしまうのですが、どうすればいいんでしょうか。 perl -e '$text = "a\na\na"; $text =~ s/\Ga/b/gm; print "$text\n";' 結果: b a a perl -e '$text = "aaa"; $text =~ s/\Ga/b/gm; print "$text\n";' 結果: bbb perl -e '$text = "a\na\na"; $text =~ s/a/b/gm; print "$text\n";' 結果: b b b 402:デフォルトの名無しさん 07/05/01 22:23:56 \Gは置換文では使わないほうがいいよ。代入されるとposがリセットされてしまうから あとを置換しながらposを保持することはできないのでコピーを作ることを考えてみては 自分ならこう書く my $replaced_text; pos $text = 0; while (pos $text < length $text) { if ($text =~ m/\G $regexp/gcsx) { # ここで入力による分岐処理を行う } elsif ($text =~ m/\G(.+?) (?=$regexp)/gcsx) { $replaced_text .= $1; } else { $text =~ m/\G (.*)/gcsx; $replaced_text .= $1; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch