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.
Utilizzando la seguente regex:
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 .temperature non è 120f ma 119 f ...". Le remperature vengono mantenute correttamente, ma non tutte le cifre dalla prima stringa di cifre vengono eliminate.
La mia prima iterazione era così:
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
che ha portato a:
".temperature 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 = ".. .temperature non è 120f ma 119 f ... ";