私はより広いコンテキストで必要なものと一致するキャプチャグループを持つ正規表現を持っています。私はその後、キャプチャグループ$1
を取って、私のニーズにそれを使用します。それは簡単です。Perlのregex全体ではなく特定のキャプチャグループを置き換えます。
しかし、置換すると、正規表現全体ではなく$1
のコンテンツを置き換えたいときに、キャプチャグループをs///
とどのように使用するのですか?
ありがとうございます!
-f
私はより広いコンテキストで必要なものと一致するキャプチャグループを持つ正規表現を持っています。私はその後、キャプチャグループ$1
を取って、私のニーズにそれを使用します。それは簡単です。Perlのregex全体ではなく特定のキャプチャグループを置き換えます。
しかし、置換すると、正規表現全体ではなく$1
のコンテンツを置き換えたいときに、キャプチャグループをs///
とどのように使用するのですか?
ありがとうございます!
-f
あなただけ(use English
で、perldoc perlvar
を参照)@LAST_MATCH_START
と@LAST_MATCH_END
を使用して、その後1つのキャプチャを交換する必要がある場合と一緒にsubstr
は実行可能な選択肢です:
use English qw(-no_match_vars);
$your_string =~ m/aaa (bbb) ccc/;
substr $your_string, $LAST_MATCH_START[1], $LAST_MATCH_END[1] - $LAST_MATCH_START[1], "new content";
# replaces "bbb" with "new content"
私が理解するように、文字を消費しないルックアヘッドやルックアヘッドを使用することができます。または、グループにデータを保存し、探しているものだけを削除します。例:先読みして
:
データをグループ化するs/your_text(?=ahead_text)//;
:
s/(your_text)(ahead_text)/$2/;
これは古い質問ですが、>something
で始まる行を>something_else
に置き換える方が簡単です。 fastaシーケンスのヘッダーを変更するのに適しています。
while ($filelines=~ />(.*)\s/g){
unless ($1 =~ /else/i){
$filelines =~ s/($1)/$1\_else/;
}
}
ありがとうございます! – flohei
匿名の投票者になるでしょうか彼の投票を説明してください?ありがとう。 –