私はこれを行うのは非常に難しいと思います、事は次のとおりです:
次の形式の文字列があります。
GlobalParameters::$docId = DocList::$PARTNERS;
そして、文字列_ VIEWをシンボルの最後に追加したいと思います。問題は、[〜#〜] Partners [〜#〜]だけでなく、他のシンボルも一致させたいということです。そこで、この正規表現を試しました。
検索:
GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$(.*)\;
と置換する:
GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$(.*)_VIEW\;
しかし、私はちょうど得ました:
GlobalParameters::$docId = DocList::$(.*)_VIEW;
すべての試合で。どうすればこれを回避できますか?
主な誤りは、(
と)
で区切られた一致フィールドを、置換文字列の\1
で識別する必要があることです。
GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$\1_VIEW\;
Geanyの実装にはこのデフォルトがありませんが、正規表現を使用する多くのプログラムはデフォルトでBRE(基本正規表現)モードになっているため、検索を区切るには\(
と\)
が必要です。次のような部分式:
GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$\(.*\)\;
注:v1.24以降のGeanyでは、括弧をエスケープする必要がないため、一致するフィールドを区切るには(
と)
だけが必要です。
他のより単純な検索と置換の文字列が私に起こりますが、ファイル内の他の文字列のコンテキストを見ずに、どちらが満足できるかわかりません。ただし、次の点で問題ありません。-
探す:
\(GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$.*\)\;
交換:
\1_VIEW\;
ここでは、末尾の;
を除く文字列全体が一致し、_VIEW
が追加されます。
AFHの答えを拡張するために、私はより複雑な例を作成しました。
変更される文字列:
abc: 123
探す:
(abc)\: (123)
置換(1defは最初の一致式に追加され、456は2番目に追加されます):
\1def \2456
結果:
abcdef 123456