テキスト分析のためにフリーテキストフィールドをクリーンアップしたいのですが、特定の文字が続く場合を除いて、すべての桁を削除しようとしています。以下の例では、最初の数値を削除しますが、120fと119 fはどちらも意味のある値なので、そのままにしておきます。
次の正規表現を使用します。
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
私にこの結果を与えます:
"114。気温は120fではなく119 f ..."です。remperatureは正常に保持されますが、最初の数字列のすべての数字が削除されるわけではありません。
私の最初の反復は次のようになりました:
Regex( Phrase, "\d+([^\d+f])", "", GLOBALREPLACE );
その結果:
「。温度は120fではなく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 .temperature is 120fではなく119 f ...";
結果= ".. 。温度は120fではなく119f ... ";