我想清理一个用于文本分析的自由文本字段列,并试图删除所有数字,除非后面跟着一个特定的字母。 在下面的示例中,我想删除第一个数字,但保留 120f 和 119 f,因为它们是有意义的值。
使用以下正则表达式:
Phrase =
"14.300.114 .temperature is not 120f but 119 f...";
Show( Phrase );
Regex( Phrase, "\d+([^\d+(f|\sf)])", "", GLOBALREPLACE );
给我这个结果:
“114 .temperature 不是 120f 而是 119f...”。 成功保留了温度,但并非第一个数字串中的所有数字都被丢弃。
我的第一次迭代看起来像这样:
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...";