Wie ersetze ich alle Zeichenfolgen durch Zahlen, die in jeder Zeichenfolge in Notepad ++ enthalten sind?

108

Ich versuche alle Werte mit folgendem Muster zu finden:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

und ersetzen Sie es durch Wert innerhalb der Bereiche.

Ich verwende den folgenden regulären Ausdruck, um das Muster zu finden:

.*"\d+"

Wie kann ich einen Ersatz machen?

Anton Selin
quelle
2
Was ist das Ersatzteil? Könnten Sie ein Beispiel geben?
Toto
^. * value = "([^"] *) ". * $ Überprüfen Sie diesen regulären Ausdruck und ersetzen Sie den Wert \ 1, wo der Wert benötigt wird
Nikhil KS

Antworten:

191

Drücken Sie in Notepad ++ zum Ersetzen Ctrl+ H, um das Menü Ersetzen zu öffnen.

Wenn Sie dann die Schaltfläche "Regulärer Ausdruck" aktivieren und in Ihrem Ersatz einen Teil Ihres übereinstimmenden Musters verwenden möchten, müssen Sie "Gruppen erfassen" verwenden (lesen Sie mehr bei Google ). Angenommen, Sie möchten mit jeder der folgenden Zeilen übereinstimmen

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

mit dem .*"\d+"Muster und möchte nur die Nummer behalten. Sie können dann eine Erfassungsgruppe in Ihrem übereinstimmenden Muster verwenden, indem Sie Klammern verwenden (und )wie folgt : .*"(\d+)". Jetzt können Sie in Ihrem Ersatz einfach schreiben $1, wobei 1 US-Dollar auf den Wert der ersten Erfassungsgruppe verweist und die Nummer für jedes erfolgreiche Spiel zurückgibt. Wenn Sie beispielsweise zwei Erfassungsgruppen hatten (.*)="(\d+)", $1wird die Zeichenfolge valueund $2die Nummer zurückgegeben.

Also mit:

Finden: .*"(\d+)"

Ersetzen: $1

Es wird dich zurückbringen

4
403
200
201
116
15

Bitte beachten Sie, dass es viele alternative und bessere Möglichkeiten gibt, das oben genannte Muster abzugleichen. Zum Beispiel wäre das Muster value="([0-9]+)"besser, da es spezifischer ist und Sie sicher sind, dass es nur mit diesen Linien übereinstimmt. Es ist sogar möglich, den Ersatz ohne die Verwendung von Erfassungsgruppen vorzunehmen, aber dies ist ein etwas fortgeschritteneres Thema, also lasse ich es vorerst :)

psxls
quelle
19
Für den Ersatz $1hat bei mir nicht funktioniert. Ich habe \1stattdessen verwendet und das hat funktioniert.
Jason Wheeler
12
\1Funktioniert in allen Versionen von Notepad ++. $1funktioniert nur in den neueren.
Cullub
Ich vermute, das funktioniert nicht mit dem Hex EditorPlugin. Im Hex-Ansichtsmodus zeigt Notepad ++ die Regular ExpressionOption für Suchen / Ersetzen nicht an. Im Textansichtsmodus wird die Regular ExpressionOption Suchen / Ersetzen angezeigt. Ich verwende Notepad ++ Version 6.9.2, die derzeit die aktuelle Version ist.
Kevin Fegan
15

psxls gab eine großartige Antwort, aber ich denke, meine Notepad ++ - Version ist etwas anders, so dass die Erfassung von $ (Dollarzeichen) nicht funktioniert hat.

Ich habe Notepad ++ v.5.9.3 und hier ist, wie Sie Ihre Aufgabe erfüllen können:

Suchen Sie nach dem Muster: value = "([0-9] *)" und ersetzen Sie es durch: " 1" (was auch immer Sie um diese Erfassungsgruppe herum tun möchten)

Ex. Mit eckigen Klammern umgeben

[\ 1] -> erzeugt value = "[4]"

Dchayka
quelle
1
\1Hat mir geholfen, die Nummer zu behalten, aber das Zitat dahinter zu entfernen. Ich hatte ungefähr 7400 Zeilen in einem Dokument wie tablename.columnname = '12345'. Das erste Zitat war leicht zu entfernen, das zweite wurde mit \1dem Textfeld "Ersetzen" erstellt. Vielen Dank, +1
Ben Fransen
6

Ersetzen (.*")\d+(")

Mit $1x$2

Wo xist Ihr "Wert innerhalb der Bereiche".

Marsze
quelle
0

Ich habe Notepad ++ v6.8.8

Finden Sie : [([a-zA-Z])]

Ersetzen : [\ '\ 1 \']

Erzeugt: $ array [XYZ] => $ array ['XYZ']

Juan Tapiador
quelle
-3

Finden: value="([\d]+|[\d])"

Ersetzen: \1

Es wird dich wirklich zurückbringen

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);
user3178007
quelle
3
In welcher Beziehung steht diese JavaScript-Lösung zu der Frage, die mit Notepad ++ markiert wurde?
Jason Aller
In welcher Beziehung stehen fehlerhafte, fehlerhafte Antworten 1 und 2 zu der Frage, die mit Notepad ++ markiert wurde?
user3178007
Warum habe ich die Frage hier gestellt? Weil ich keine Fragen erstellen kann. Weil ich nicht genug Reputationspunktzahl habe.
user3178007
1
Es gibt keine solche Reputationsanforderung, um Fragen zu stellen, wie Sie behaupten - Sie hätten möglicherweise nicht eingeschränkt werden können. Versuchen Sie es erneut: stackoverflow.com/questions/ask
BoltClock
Die Frage wurde gestellt. stackoverflow.com/questions/24112018/… Aber nur in wenigen Worten zu suchen. Einschränkung ist!
user3178007