でタグ付けされた XML ファイル内のすべての名前を、xyz としましょう。つまり、タグ間のすべて (空白を含む) を置き換えます。私は何を間違っていますか?
Search: (<name>)(.*)(</name>)
Replace: \1xyz\3
XML を正規表現で解析しようとしています。
ただし、とにかく間違っているのは、貪欲な繰り返しの使用です。これは、一致条件を満たしながら可能な限り消費しようとするため、最初<name>
から最後まで</name>
(それらが一緒に属していなくても)続きます.. 代わりにこれを使用してください:.*
Search: (<name>).*?(</name>)
Replace: \1xyz\2
<
または、安全のためにandをエスケープすることもできます。>
これは、特定のケースではメタ文字であるためです (ただし、これには当てはまりません)。
Search: (\<name\>).*?(\</name\>)
Replace: \1xyz\2
どちらの場合も、これは.*
欲張りにならないようにします。つまり、消費をできるだけ少なくします。
また、必ず Notepad++ 6 にアップグレードしてください。それ以前は、Notepad++ の正規表現エンジンにいくつかの問題があったためです。
最後に、コメントで hoombar が指摘しているように、デフォルトでは改行文字を除く.
すべての文字に一致します。Notepadd++ では、チェックボックスをオンにすることでこの動作を変更できます。. matches newline