Je souhaite nettoyer une colonne de texte libre pour l'analyse de texte et j'essaie de supprimer tous les chiffres sauf lorsqu'ils sont suivis d'une lettre spécifique. Dans l'exemple ci-dessous, je souhaite supprimer les premiers nombres mais conserver à la fois 120f et 119 f, car ce sont des valeurs significatives.
Utilisation de l'expression régulière suivante :
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
me donne ce résultat :
"114 .temperature n'est pas 120f mais 119 f...". Les températures sont conservées avec succès, mais tous les chiffres de la première chaîne de chiffres ne sont pas supprimés.
Ma première itération ressemblait à ceci:
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
qui a abouti à :
".la température n'est pas 120f mais f..."
Donc, cela a réussi à supprimer tous les chiffres, mais ne conserve pas le cas "119 f" (avec l'espace entre le nombre et le "f").
Quelqu'un peut-il m'aider à comprendre comment construire l'expression qui supprime correctement tous les chiffres sauf lorsqu'ils sont suivis de "f" ou de "f" ?
Essayez d'utiliser une anticipation négative :
Phrase = "14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
result = Regex( Phrase, "(?!\d+\s*f)\d+", "", GLOBALREPLACE );
Show( result);
Sortir:
Phrase = "14.300.114 .temperature is not 120f but 119 f...";
result = ".. .temperature is not 120f but 119 f...";