找回密码
 加入
搜索
查看: 11502|回复: 17

[效率算法] 请问这个正则匹配里面为什么有空格呢?

 火.. [复制链接]
发表于 2014-6-21 18:55:40 | 显示全部楼层 |阅读模式



匹配的文本:
生蚝10元
算命老先生:一路顺风5元
矿泉水1元
去驾校路费5元
从驾校回到家路费3元
交话费20元
洗面奶27.5元
交话费20元
洗面奶27.5元

我写的正则:
(\d+)元|(\d+\.\d+)元

谢谢!

本帖子中包含更多资源

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

×
发表于 2014-6-23 09:14:50 | 显示全部楼层
额,好吓人,学习学习。
发表于 2014-6-21 19:02:24 | 显示全部楼层
(\d+(?:\.\d+)?)元
 楼主| 发表于 2014-6-21 19:06:18 | 显示全部楼层
afan 发表于 2014-6-21 19:02



    哇 好快 好厉害谢谢你
发表于 2014-6-21 19:59:20 | 显示全部楼层
真想跟A版学正规!!我对正规就皮毛....
发表于 2014-6-23 10:07:47 | 显示全部楼层
额,好吓人,学习学习。
发表于 2014-6-23 20:51:18 | 显示全部楼层
强,正在学习正则中。比较佩服了,另外就是感觉这个软件真是很方便
发表于 2014-6-23 21:02:08 | 显示全部楼层
回复 2# afan


   A版,能讲解一下楼主正则的问题所在吗?还有你那个正则没有看明白,可否讲解一下?
发表于 2014-6-23 21:24:53 | 显示全部楼层
本帖最后由 afan 于 2014-6-24 13:25 编辑

回复 8# haijie1223


    大概的意思是
LZ的“(\d+)元|(\.\d+)元”
| 隔断的各段表达式,匹配时会从第一段开始,如果直到最后都未匹配则放弃。如果某段匹配到了,则如果前面有几段表达式的组能够匹配到就会几个空匹配。个人理解,不一定正确.

“(\d+(?:\.\d+)?)元”
是里面的 (?:\.\d+)? 没理解吗? (?:xxx) 这是一个非捕获组,后面的 ? 代表前面的表达式可有可无
发表于 2014-6-23 22:01:02 | 显示全部楼层
回复 9# afan


    谢谢A版,什么是非捕获组?不是很明白
发表于 2014-6-23 23:57:55 | 显示全部楼层
回复 10# haijie1223


    就是不分配组名、不能引用的组。
发表于 2014-6-24 01:04:21 | 显示全部楼层
回复 11# afan


    谢谢A版。永远学不完~
发表于 2014-6-24 07:35:26 | 显示全部楼层
用另一个测试器测试发现,楼主写的规则在匹配到小数的时候,第一段匹配规则匹配到的是字符串开头,估计虽然是小数的情况下,“(\d+)元”这一段也是成立的,可是不知是否优先级的问题,会将结果给最大匹配的“(\d+\.\d+)元”,所以“(\d+)元”就只能返回一个字符串开头的空白位置,这是否说明au3里的正则表达式对于可以匹配的但不是最佳匹配的都会返回一个这样的值呢?
发表于 2014-6-27 14:00:14 | 显示全部楼层
学习。。。。。。。。。。。。。。。
发表于 2014-6-27 15:56:02 | 显示全部楼层
非捕获组 学习了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-6 11:38 , Processed in 0.084216 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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