Ich möchte eine Freitextspalte für die Textanalyse bereinigen und versuche, alle Ziffern zu löschen, außer denen, denen ein bestimmter Buchstabe folgt. Im folgenden Beispiel möchte ich die ersten Zahlen weglassen, aber sowohl 120f als auch 119f beibehalten, da es sich um aussagekräftige Werte handelt.
Verwendung des folgenden regulären Ausdrucks:
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
gibt mir dieses Ergebnis:
„114 °C. Die Temperatur beträgt nicht 120 °F, sondern 119 °F …“. Die Temperaturen werden erfolgreich gehalten, es werden jedoch nicht alle Ziffern aus der ersten Ziffernfolge gelöscht.
Meine erste Iteration sah so aus:
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
Was dazu geführt hat :
„.Temperatur ist nicht 120f, aber f…“
Damit gelang es also, alle Ziffern zu entfernen, die Groß-/Kleinschreibung „119 f“ (mit dem Leerzeichen zwischen der Zahl und dem „f“) wird jedoch nicht beibehalten.
Kann mir jemand helfen zu verstehen, wie man den Ausdruck erstellt, der alle Ziffern korrekt löscht, außer wenn ihnen „f“ oder „f“ folgt?
Versuchen Sie es mit einem negativen Lookahead:
Phrase = "14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
result = Regex( Phrase, "(?!\d+\s*f)\d+", "", GLOBALREPLACE );
Show( result);
Ausgang:
Phrase = „14.300.114. Die Temperatur beträgt nicht 120 °F, sondern 119 °F …“;
result = ".. .temperatur ist nicht 120f, sondern 119f...";