テキスト分析のためにフリーテキストフィールドの列をクリーンアップしたいのですが、特定の文字が続く場合を除いてすべての数字を削除しようとしています。 以下の例では、最初の数値を削除しますが、120f と 119f は意味のある値なので両方とも保持します。
次の正規表現を使用します。
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
この結果が得られます:
「114 .温度は 120 度ではなく 119 度です...」。 温度は正常に保持されますが、最初の数字列のすべての数字が削除されるわけではありません。
私の最初の反復は次のようになりました。
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
その結果:
「.温度は120°Fではなく...」
したがって、これはすべての数字を削除することには成功しましたが、「119 f」の場合(数字と「f」の間にスペースがある)は維持されません。
誰かが、「f」または「 f」が続く場合を除いてすべての数字を正しく削除する式を作成する方法を理解するのを手伝ってくれますか?
否定先読みを使用してみてください。
Phrase = "14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
result = Regex( Phrase, "(?!\d+\s*f)\d+", "", GLOBALREPLACE );
Show( result);
出力:
フレーズ = "14.300.114 .温度は 120 度ではなく 119 度です...";
result = ".. .温度は 120 度ではなく 119 度です...";