Ich möchte überzählige Dezimalstellen aus einer Zeichenfolge entfernen, indem ich die Suchen/Ersetzen-Funktion mit regulären Ausdrücken verwende.
Zum Beispiel :
<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>
Sollte so aussehen:
<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>
Am weitesten bin ich mit diesem Ausdruck gekommen
(\.\d{3,12})
Jede Hilfe wird geschätzt.
Antwort1
- Ctrl+H
- Suchen nach:
(?<=\d\.\d\d)\d+
ODER\d\.\d\d\K\d+
- Ersetzen mit:
LEAVE EMPTY
- Replace all
Erläuterung:
(?<= : start lookbehind, make sure we have
\d\.\d\d : a digit, a dot and 2 digits
) : end lookbehind
\d+ : 1 or more digits
andere Alternative:
\d\.\d\d : a digit, a dot and 2 digits
\K : forget what we have seen until this point
\d+ : 1 or more digits
- Überprüfen Sie den regulären Ausdruck
Ergebnis für gegebenes Beispiel:
<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>
Antwort2
Ich möchte überzählige Dezimalstellen aus einer Zeichenfolge entfernen, indem ich die Suchen/Ersetzen-Funktion mit regulären Ausdrücken verwende.
Menü "Suchen" > "Ersetzen" (oder Ctrl+ H)
Setzen Sie „Suchen nach“ auf
(\d+\.\d\d).*<
.Setzen Sie "Ersetzen durch" auf
\1<
Aktivieren Sie „Regulärer Ausdruck“ und „stimmt mit Zeilenumbruch überein“
Klicken Sie auf „Alle ersetzen“
Vor:
<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>
Nach:
<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>
Weiterführende Literatur
- So verwenden Sie reguläre Ausdrücke in Notepad++ (Tutorial)
- Notepad++: Eine Anleitung zur Verwendung regulärer Ausdrücke und des erweiterten Suchmodus
- Tutorial zu regulären Ausdrücken
- RegExr: RegEx lernen, erstellen und testen
- regex101: Online-Tester und Debugger für reguläre Ausdrücke
- RegExper: Visualisierer für reguläre Ausdrücke