1

文字列内のコンマまたはハイフンのすべてのインスタンスを置き換えようとしています$charlie。最初に試したコードは次のとおりです。

#!/usr/bin/perl
use strict;
use warnings;

my $charlie = "Charlie, 59, 2009";
print "Old Charlie: $charlie\n";
$charlie =~ s/[\,-]/ /;
print "New Charlie: $charlie\n";

これにより、次の出力が生成されます。

C:\scripts\perl\sandbox>charlie_substitute.pl
Old Charlie: Charlie, 59, 2009
New Charlie: Charlie  59, 2009

ご覧のとおり、最初のコンマだけがスペースに置き換えられました。複数のコンマを説明するために、正規表現をに変更しました$charlie =~ s/[\,-]{1,2}/ /;が、それでも同じ出力が得られます。

置換で検索する出現回数を正しく指定するにはどうすればよいですか?

4

1 に答える 1

5

/g「グローバル」を置き換えるために使用します。

$charlie =~ s/[,\-]/ /g;
                      ^
                      |

(,は文字クラスでも一般的な正規表現でも特別ではないため、エスケープする必要はありません。一方、-文字クラスでは特別である可能性があります。何かをエスケープする必要がある場合、それは-.-ここにあるように、それがクラスの最初または最後の文字である場合はエスケープされます。)

于 2013-08-07T16:07:03.380 に答える