我想将数字输入作为字符串,然后去除冗余零。我已经使用子字符串完成了此操作,但想知道是否有一种使用正则表达式的方法。例如,用正则表达式替换。
我仅使用正则表达式检查字符串是否为有效数字。我反复使用子字符串和if条件。我希望能够使用正则表达式将“ 0012340.3200E6”转换为“ 12340.32E6”。
rr("((\\+|-)?[[:digit:]]+)(\\.(([[:digit:]]+)?))?((e|E)((\\+|-)?)[[:digit:]]+)?");
答案 0 :(得分:0)
最好将数字转换为浮点数,然后使用字符串格式,即使用
char buffer [50];
sprintf(buffer, "%E", ...)
)
或spritnf(buffer, "%fE%d", ..., ...)
(如果对于您正在执行的操作而言,效果会更好)。
无论如何,正则表达式应该看起来像
([+-]?)0*(\d+)(?:(\.\d*[1-9])|\.)0*(?:([Ee][+-]?)0*(\d+))?
(请参阅regex101.com),然后替换模式将为
$1$2$3$4$5
因此您将匹配组中的所有内容都排除在零之外,然后将其替换为所有匹配组中的内容。
剩下的是转义上面的表达式并用数字\d
处理–我已经看到您使用的是[[:digit:]]
。