python 正则表达式匹配数字或者小数点_用正则表达式匹配浮点数
在这个例子中,我将向你展示如何避免不熟悉正则表达式的人常犯的一些错误。我们将尝试建立一个可以匹配浮点数的正则表达式。我们的正则表达式也应该匹配整数,以及整数部分(即0)没有给出来的浮点数。
乍看之下,下面的正则表达式似乎可以达到预期效果[-+]?[0-9]*\.?[0-9]*。这定义了一个这样的浮点数:可选的符号(正负号),接着是可选的一连串数字(整数部分),接着是可选的点号(小数点),再接着是可选的一连串数字(小数部分)。
用单词拼出这个正则表达式使之更加明显:正则表达式中所有的部分都是可选的。这个正则表达式会把一个符号(正负号)或者一个点号(小数点)当成有效的浮点数。事实上,它会把一个空字符串当成有效的浮点数。如果它被用于像 Perl 或者 PHP 一样的脚本语言来验证用户输入,这个正则表达式将会引起严重的麻烦。
不转义点号也是一个常见的错误。一个没有转义的点号将匹配任何字符,包括点号。如果我们没有转义点号,4.4将被认为是浮点数,4X4也一样。
创建正则表达式时,更重要的是考虑它不应该相配的,而不是它应该匹配的。因为正则表达式引擎是贪婪的,所以上述正则表达式的确可以匹配一个正确的浮点数。但是它也将会相配许多我们不想要,我们必须排除。
在这里有一个更好的尝试:[-+]?([0-9]*\.[0-9]+|[0-9]+)。这个正则表达式将会匹配一个可选的符号(正负号),或者紧接着零个或更多的数字紧接着一个点号(小数点)再紧接着一个或更多的数字(一个整数部分可选的浮点数),或者紧接着一个或更多的数字(整数)。
这是一种更好的定义,所有的匹配都至少包含一个数字,因为[0-9]+ 部分的关系。我们成功的排除了我们不想要的匹配:那些不包含数字的。
我们可以把正则表达式优化成:[-+]?[0-9]*\.?[0-9]+
最后,如果你是想验证一个字符串是否为浮点数,而不是在一个长字符串中查找浮点数,你必须在正则表达式中使用锚点:^[-+]?[0-9]*\.?[0-9]+$
随机文章:
这篇文章发布于 2011年04月29日,星期五,22:47,归类于 程序设计。您可以跟踪这篇文章的评论通过 RSS 2.0 feed。
您可以留下评论,或者从您的站点trackback。
python 正则表达式匹配数字或者小数点_用正则表达式匹配浮点数相关推荐
- js正则表达式校验数字和小数点的数字
js正则表达式校验数字和小数点的数字 /** obj 校验的数据 name 前台字段的名字,用于判断后清空,可以不传 */ function checkFloat(obj,name){var re = ...
- 正则表达式 数字和小数点_《自然语言处理综论》第三版笔记(二)之正则表达式,文本标准化和编辑距离...
概要 早期有一种叫ELIZA的自然语言处理系统能够与用户进行有限的对话交流.它的原理是通过模式匹配来识别词组,譬如"YOU are X",然后将其转换为合适的回答,如"W ...
- 教你用正则表达式提取数字和小数点
1.初识 1.1.纯数字提取 1 2 3 4 5 6 7 8 9 -- "提取123abc提取":提取当前字符当中的123 -- 1.Hive: select regexp_r ...
- 正则表达式符号特殊详解_常用正则表达式_Java中正则表达式的使用
正则表达式符号详解 限定符: 指定一个组件必须出现多少次才能满足. 1.使用 "*", "+", "?" 作为限定符: "*&qu ...
- c语言正则表达式测试数字,C语言中使用正则表达式
POSIX 规定了正则表达式的C语言库函数, 参见regex(3), 我们已经学了很多C函数得用法 读者应该具备自己看懂man手册得能力 C语言中使用正则表达式一般分为三部: 1.编译正则表达式re ...
- python正则表达式匹配数字和字母_只能输入数字和字母组合的正则表达式怎么写?...
展开全部 var p = /(?!^\d+$)(?!^[a-zA-Z]+$)[0-9a-zA-Z]{4,23}/ (?!^\d+$) 排除全数字 (?!^[a-zA-Z]+$) 排除全字母e5a48d ...
- java正则表达式匹配数字和小数点,快来收藏!
1.为什么要使用分布式锁 使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作. 1.1举一个很长的例子 系统 A 是一个电商系统,目前是一台机器部署,系统中有一个用户下订单 ...
- java正则表达式 字母数字下划线_字母数字下划线常用正则表达式
1.由数字.26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非 ...
- python正则表达式爬取网页数据_常用正则表达式爬取网页信息及HTML分析总结
Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取 标签之间内容2.获取 超链接之间内容3.获取URL最后一个参数命名图片或传递参数4.爬取网页中所有URL链接5.爬取网页标题titl ...
最新文章
- mysql 必须安装php_非root模式下安装mysql php小记
- 权限管理----角色管理
- 【Linux】关于ffmpeg的一些常见用法
- python快速入门答案-Python 开发 14 天快速入门
- UA OPTI512R 傅立叶光学导论7 线性平移不变系统简介
- JAVA所有选手就位后比赛开始_Java多线程-CountDownLatch、CyclicBarrier、Semaphore
- Winform中实现新增和更新共用一个页面的示例流程
- 安卓手机运行git和python操作指南-有手机就能写代码了
- 用辩证、动态的眼光看世界
- xubntu18.10中的conky配置文件
- Unicode、UTF-8、UTF-16之间的关系
- 2015年邮件营销机会在哪里?
- 【菜鸟站长成长记】CuteFTP9 初步使用心得
- 新手电脑硬件软件故障解答(二)
- 输入输出练习 python
- 利用Dreamweaver模板批量制作网页
- 网银支付接口资料小总
- 错误1406.无法将数值写入键/Software/Classess/.htm/OpenWithList/devenv.exer的解决方案
- Android Fastboot 模式下刷机教程
- Eclipse使用入门指南及技巧