浮点数的正则表达式到底应该怎么写

Kfans 2012-02-08 03:30:25
网上找了一下浮点数的正则表达式 结果答案很一致 都是:"^(-?d+)(.d+)?$"

这样子不能过滤掉整数部分前面的0 比如 011.23 怎样才能把前面的零给过滤掉呢?
...全文
368 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snoowood 2012-02-08
  • 打赏
  • 举报
回复
"^(-?(([1-9]d*)|0))(\.d+)?$"
赵4老师 2012-02-08
  • 打赏
  • 举报
回复
test.c:
#include <stdio.h>
char s[40];
char c;
double d;
void main() {
while (1) {
printf("\nInput a double number:");
fflush(stdout);
rewind(stdin);
fgets(s,40,stdin);
if (2==sscanf(s,"%lf%c",&d,&c)) {
if ('\n'==c) break;
}
}
printf("%lg\n",d);
}
测试:
C:\>test

Input a double number:(输入回车)

Input a double number:abc

Input a double number:啥

Input a double number:12x

Input a double number:12.1y

Input a double number:.

Input a double number:.1
0.1

C:\>test

Input a double number:-1.2e3
-1200

C:\>test

Input a double number:-1.2345678901234567890e3
-1234.57

C:\>test

Input a double number:123456789012345678901234567890
1.23457e+029

C:\>test

Input a double number:1e3000
1.#INF

C:\>test

Input a double number:1234.5E-2
12.345

C:\>
luciferisnotsatan 2012-02-08
  • 打赏
  • 举报
回复
(-?[1-9]d*)试试
seucs 2012-02-08
  • 打赏
  • 举报
回复
"^(-?[0-9]+)(\.[0-9]+)?$"
luciferisnotsatan 2012-02-08
  • 打赏
  • 举报
回复
匹配出来后,再过滤下不就行了???

又不是啥比赛,只准用一行解决。
有时候,很难的问题,只要加个中间层就能轻松搞定
Kfans 2012-02-08
  • 打赏
  • 举报
回复
谢谢答复 但是没有得到我想要的答案
赵4老师 2012-02-08
  • 打赏
  • 举报
回复
解决字符串词法分析问题,正则表达式不是万能的,有限状态自动机才是万能的。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧