重複の可能性:
$1を正規表現の数値と連結する方法
SomeText
ファイル内のすべてのインスタンスをSomeText2
、コマンドラインからの単純な正規表現置換を使用して置換しようとしています(Windowsの場合)。
perl -pi.bak -e "s/(SomeText)/$12/g" sometext.txt
選択がないため、これは機能しません$12
。$1
後にスペースを入れずに選択トークンを正しく示すにはどうすればよいですか?
重複の可能性:
$1を正規表現の数値と連結する方法
SomeText
ファイル内のすべてのインスタンスをSomeText2
、コマンドラインからの単純な正規表現置換を使用して置換しようとしています(Windowsの場合)。
perl -pi.bak -e "s/(SomeText)/$12/g" sometext.txt
選択がないため、これは機能しません$12
。$1
後にスペースを入れずに選択トークンを正しく示すにはどうすればよいですか?
${1}
原則として、正規表現または補間された文字列リテラル内で、{}
any$
または@
sigilの後に使用して、関心のある変数の名前を明示的に区切ることができます。
はい、@ Matが言うように、ある種のUnixシステムを使用している場合は、一重引用符を使用してください。
\K
これは、ルックアラウンドアサーションまたはエスケープに最も適していると思います。
perl -pi.bak -e "s/SomeText\K/2/g" sometext.txt
または、後読みアサーションを使用します。
perl -pi.bak -e "s/(?<=SomeText)/2/g" sometext.txt
これにより、前または後読みの内側にあるものが削除されるのを防ぐこと\K
ができるため、元に戻す必要はありません。
変数に長い構文を使用することもできます。これは、を使用すること${name}
です${1}
。
特定のケースでは、キャプチャ変数を使用する必要はまったくありません。
s/SomeText/SomeText2/g
変数補間に関するより一般的な質問への回答については、Danの回答を参照してください。