我想清理一個用於文本分析的自由文本字段列,並試圖刪除所有數字,除非後面跟著一個特定的字母。 在下面的示例中,我想刪除第一個數字,但保留 120f 和 119 f,因為它們是有意義的值。
使用以下正則表達式:
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 );
結果是:
“.temperature 不是 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);
輸出:
Phrase = "14.300.114 .temperature 不是 120f 而是 119f...";
result = ".. .temperature 不是 120f 而是 119f...";