ファイル内の正規表現のすべての一致を見つけて置き換えようとしています。複数のステップで一致を見つけたいと思います。たとえば、最初に 2 つの $IDENTIFIER_ の間にあるパターンを見つけ、そのパターン内ですべての $ONE を $TWO に置き換えます。
これは私がこれまでに持っているものです:
$entireFile = "Some random text here var_a 4456 var_b var_c 1122 var_d var_e 559 var_f Some random text here ";
my $ONE_="1";
my $TWO_="2";
my $IDENTIFIER_ = "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b";
my $id1;
my $id2;
my $item;
while ($entireFile =~ m/($IDENTIFIER_)(.*?)($IDENTIFIER_)/g)
{
$id1 = $1;
$item = $2;
$id2 = $3;
#Check to see if $item has $ONE and replace with $TWO
if ($item =~ s/(.*?)$ONE_(.*?)/$1$TWO_$2/g )
{
print $id1.$item.$id2."\n" ;
}
}
これは以下を出力します:
var_c 2222 var_d
私が助けを必要としているのは、ファイルの残りの部分 (最初の一致の前のテキスト、次の一致の間のテキスト、最後の一致の後のテキスト) を印刷する方法です。