0
グローバルマッチを行う場合に問題があります。一致した文字列を元の文字列と新しい文字列で構成された新しい文字列に置き換えるにはどうすればよいですか?今Perl、グローバルマッチ、マッチした文字列の後に何かを追加する
$newstring = "t123 fruit1:apple;t456 fruit2:pear;t789 fruit3:banana";
、私のPerlコード:私は、その後のような新しい文字列を取得するにはどうすればよい
my %hash = (
t123 => 'fruit1',
t456 => 'fruit2',
t789 => 'fruit3',
);
:私はこのようなハッシュを持って次に
$string = "t123:apple;t456:pear;t789:banana";
:のような文字列がありますは:
while($string =~ /t\d{3}/g){
if (exists $hash{"$&"}) {
my $match = $&;
$string =~ s/$&/$match.$hash{"$&"}/;
}
}
マッチは常に最初の文字から始まるからです。私はpos(string)
か何かにオフセットを持たせるべきだと思いますが、どうやってこれを行うのか分かりません。
'それを作るために良いでしょう(<[^;]?!)?($マッチ)(= :)' – ysth
ああ、あなたは正しい、ということ逃しました – ysth