0

重複の可能性:
$1を正規表現の数値と連結する方法

SomeTextファイル内のすべてのインスタンスをSomeText2、コマンドラインからの単純な正規表現置換を使用して置換しようとしています(Windowsの場合)。

perl -pi.bak -e "s/(SomeText)/$12/g" sometext.txt

選択がないため、これは機能しません$12$1後にスペースを入れずに選択トークンを正しく示すにはどうすればよいですか?

4

3 に答える 3

5

${1}

原則として、正規表現または補間された文字列リテラル内で、{}any$または@sigilの後に使用して、関心のある変数の名前を明示的に区切ることができます。

はい、@ Matが言うように、ある種のUnixシステムを使用している場合は、一重引用符を使用してください。

于 2012-11-14T16:51:50.473 に答える
2

\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}

于 2012-11-14T16:57:11.120 に答える
0

特定のケースでは、キャプチャ変数を使用する必要はまったくありません。

s/SomeText/SomeText2/g

変数補間に関するより一般的な質問への回答については、Danの回答を参照してください。

于 2012-11-14T16:54:18.470 に答える