Notepad++ - 特定の文字(その行内)まで(行ごとに)検索するにはどうすればよいですか?

Notepad++ - 特定の文字(その行内)まで(行ごとに)検索するにはどうすればよいですか?

次のような線がいくつかあります

\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code

各行で、 から[までのコードを{自分のコードに置き換えたいと思います。

  • \node常に各行の先頭にあります。

  • {ない行の末尾に。

私はすでに(ここで)^\\node.*\{やのようなものを見つけて試しましたが、どちらも同じ不満足な結果になります。つまり、ドキュメントの\\node.*\{最後までコード全体がマークされます。{

答え1

実際のところ、Wrap around を有効にしてもまったく問題ありません。実際、有効にすることをお勧めします。

フラグメントは行の先頭にあることが保証されているため、キャレット ( ^) アンカーを使用できます。

私の場合は次の方法が使えます:

検索: ^\\node\[[^{]*\{; 置換:\\node[test{

^行の先頭にアンカーします。特殊文字をエスケープした後、\\node\[テキストと一致します。開き中括弧を除くすべての文字を取得します。(ここでは、文字クラス内にあるためエスケープする必要がないことに注意してください。)次に、開き中括弧自体を取得します。\node[[^{]*{\{


もし ... Some code here ... 中括弧を含めることができます:

検索: ^\\node\[.*\{([^{]*)$; 置換:\\node[test{$1

最初の部分は同じです。次に、.*は可能な限り多くの文字に一致します。\{は開き中括弧に一致し、([^{]*)$行末までのすべての文字に一致してキャプチャします。が[^{]指定されているため、開き中括弧には一致しないため、前の部分は行の\{最後の文字に一致する必要があります。{

答え2

[検索/置換] ダイアログで、[検索する文字列] を使用します。ノード[。*{次のように置き換えます:ノード[テスト{正常に置換...ここにコードがいくつか...テスト各行に。

次のオプションを指定する必要があります。

  • 「折り返す」にチェックを入れないでください
  • 「正規表現」にチェックを入れる
  • 「. は改行に一致します」をチェックしないでください。 ここに画像の説明を入力してください

関連情報