找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1616|回复: 3

大家帮忙看正则表达式

[复制链接]
发表于 2007-9-19 01:03:49 | 显示全部楼层 |阅读模式
[-]?[.]?[0-9]+[.]?[0-9]*
程序见下载

这是字符串匹配模式函数的正则表达式,但看不太懂。为什么输入字符串为342.231输出为342.231。要是我照上面表达式读,应该是
342和.231。我认为的原因是运行[-]?[.]?[0-9],无-,无.得到3,再运行+[.]?[0-9]*,无.有42,到.停止。([0-9]*表示所有紧挨的0-9的字符串)得到42,所以合起来为342。
然后第二次从.开始运行,[-]?[.]?[0-9]得到.2,再运行+[.]?[0-9]*,得到31。

所以342.231分成两个字符串显示。请问大家我怎么错了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2007-9-19 10:17:49 | 显示全部楼层
貌似不是这样的咯~~~~
[0-9]+这个部分的意思呢,就是取连续的数字,所以,和这一部分匹配的就是342
和[.]?匹配的当然就是.了
而和[0-9]*匹配的在你的这个实例当中,就是231
所以,和全体regular string匹配的就是342.231了,这个regular string的意思呢,就是取出一个数字,这个数字可以是-开头的,可以是小数,哈,只要是数字就可以。。。。
PS:这个regular string的应用我以前也没怎么看懂,但我觉得这个vi里的说明很详细啊,哈,谢了
在PS:这个vi里,后续的对空白元素的处理,实在是牛,我以前怎么没想到呢,呵呵,不匹配输出empty string原来可以这样解决,明白咯~~~~~
回复 顶

使用道具 举报

发表于 2007-9-19 10:20:00 | 显示全部楼层
貌似上面没说清楚。。。。。
[0-9]+中的这个+,是取所有满足[0-9]的最大可能的,还是把help里这话贴出来比较清楚些:
Matches the longest number of instances of the expression preceding +; there must be at least one instance to constitute a match. For example, be+t matches bet and beet but not bt.
满足最大数目的instance,并且至少有一个instance得到满足?嘿,翻译的好差。。。。丢脸了
回复 顶

使用道具 举报

发表于 2008-1-15 17:05:05 | 显示全部楼层
加我QQ:122205874,我也想学学
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-30 13:28 , Processed in 0.033813 second(s), 11 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表