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. La température n'est pas 120f mais 119 f ...". Les remperatures 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 );
ce qui a abouti à:
".temperature n'est pas 120f mais f ..."
Donc, cela a réussi à supprimer tous les chiffres, mais ne garde 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'elle est suivie 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);
Production:
Phrase = "14.300.114 .température n'est pas 120f mais 119 f ...";
result = ".. .la température n'est pas de 120f mais de 119 f ... ";