使用正则表达式将双数替换为浮点数

Replace double number to float number using regular expression

本文关键字:替换 浮点数 正则表达式      更新时间:2023-10-16

我有一个带有常量数字的文本文件。其中一些是像0.0这样的双重类型,另一些是像0.0f这样的浮点类型。我想把所有的数字都改成以f结尾的浮点格式。但我可以用正则表达式找到浮点数,但我无法区分浮点数类型。因此,出现了这样的问题:1.0,1.1,1.1f,1.2f,2.0->1.0f,1.1f、1.1ff、1.2ff、2.0f

我想把这些样品改成这样:1.0f,1.1f,1.1f,1.2f,2.0f

我的查找浮点数的规则表达式是这样的:模式:([-+]?)([0-9]+)(.{1})([0-90]+)?替换:$1$2$3$4f

有人能区分浮点数和双数吗?

提前谢谢。

使用负前瞻(参见语法)

例如:

((?:[-+]?)(?:[0-9]+)(?:.{1})(?:[0-9]+)(?:[eE]?[+-]?[0-9]+)?)(?!f)

你的替换模式是

$1f

请注意,我已经用被动组替换了您的捕获组,并为添加了一个单独的组

编辑:可选(只使用您的测试字符串进行了测试…)

((?:[-+]?)(?:[0-9]+)(?:.{1})(?:[0-9]+)(?:[eE]?[+-]?[0-9]+)?)([^f]?,|$)

替换为

$1f$2