Voglio ripulire una colonna di testo libero per l'analisi del testo e sto cercando di eliminare tutte le cifre tranne quando seguite da una lettera specifica. Nell'esempio seguente, voglio eliminare i primi numeri ma mantenere sia 120f che 119 f, poiché sono valori significativi.
Usando la seguente espressione regolare:
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
mi dà questo risultato:
"114 .la temperatura non è 120f ma 119 f...". Le temperature vengono mantenute con successo, ma non tutte le cifre della prima stringa di cifre vengono eliminate.
La mia prima iterazione era così:
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
che ha comportato:
".la temperatura non è 120f ma f..."
Quindi questo è riuscito a rimuovere tutte le cifre, ma non mantiene il caso "119 f" (con lo spazio tra il numero e la "f").
Qualcuno può aiutarmi a capire come costruire l'espressione che elimina correttamente tutte le cifre tranne quando seguita da "f" o da "f"?
Prova a utilizzare il lookahead negativo:
Phrase = "14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
result = Regex( Phrase, "(?!\d+\s*f)\d+", "", GLOBALREPLACE );
Show( result);
Produzione:
Phrase = "14.300.114 .temperature non è 120f ma 119 f...";
risultato = ".. .la temperatura non è 120f ma 119 f...";