電子書籍の厳選無料作品が豊富!

正規表現の\Gの使い方で質問です。

ものの本によると、\Gをつけるとパターンマッチは前回の処理の続きから行われるとのこと。すると以下のようなコードなら、
ta
tb
tc
td
te
となるべきと思われます。

ところが実際は
ta
ta
ta
ta
ta
明らかに\Gは無視されて、毎回$testの先頭から処理が行われています。

どこに間違いがあるのでしょうか。



#! c:/perl/bin/perl

$test='tatbtctdtetftg';
for($i=0;$i<5;$i++) {
$test=~/(\Gt.)/;
print $1."\n";
}

A 回答 (1件)

何の条件もなく単に「\Gをつけるとパターンマッチは前回の処理の続きから行われる」とだけ書いてあるのなら, その「ものの本」に間違いがある.



逆に, 実は条件が書かれているにもかかわらずあなたが単純に「\Gをつけるとパターンマッチは前回の処理の続きから行われる」と解釈したのだとしたらあなたに間違いがある.

いずれにしても, そのスクリプトでそのように出力するのは (Perl の言語仕様として) 正しい動作です.

参考URL:http://perldoc.perl.org/perlop.html#Regexp-Quote …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!