Ersetzen mit RegEx in notepad++
Möchte ich ersetzen Sie alle Namen in eine XML-Datei tagged durch mit sagen wir mal xyz. In anderen Worten, ersetzen Sie alles (einschließlich Leerzeichen) zwischen den tags. Was mache ich falsch?
Search: (<name>)(.*)(</name>)
Replace: \1xyz\3
- Was geht schief, wenn Sie es versuchen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen,das analysieren von XML mit regulären Ausdrücken.
Jedoch, was Sie falsch machen, ist sowieso mit einem gierigen Wiederholung. Dies wird den ganzen Weg gehen von der ersten
<name>
auf den letzten</name>
(auch wenn Sie nicht zusammen gehören), da die.*
werden versuchen, Sie zu verbrauchen, so viel wie möglich, während immer noch die Erfüllung der match-Bedingung.. diese stattdessen zu Verwenden:Oder sind Sie auf der sicheren Seite, Sie kann auch die Flucht der
<
und>
, da Sie meta-Zeichen in bestimmten Fällen (nicht in dieser einen obwohl):In beiden Fällen, das macht die
.*
ungreedy, d.h. es verbraucht so wenig wie möglich.Und stellen Sie sicher, dass Sie ein upgrade auf Notepad++ 6, denn davor gab es ein paar Probleme mit Notepad++'s regex-engine.
Schließlich, als hoombar wies in einem Kommentar
.
standardmäßig entspricht jeder Charakter außer Zeilenumbruch-Zeichen. In Notepadd++ Sie können dieses Verhalten ändern, indem Sie die. matches newline
checkbox.<>
um zu verhindern, dass es zu unerwartetem Verhalten\<\>