请问这个正则匹配里面为什么有空格呢?
匹配的文本:
生蚝10元
算命老先生:一路顺风5元
矿泉水1元
去驾校路费5元
从驾校回到家路费3元
交话费20元
洗面奶27.5元
交话费20元
洗面奶27.5元
我写的正则:
(\d+)元|(\d+\.\d+)元
谢谢! 额,好吓人,学习学习。 (\d+(?:\.\d+)?)元
afan 发表于 2014-6-21 19:02 http://www.autoitx.com/images/common/back.gif
哇 好快 好厉害{:face (427):}谢谢你 真想跟A版学正规!!我对正规就皮毛....{:face (197):} 额,好吓人,学习学习。 强,正在学习正则中。比较佩服了,另外就是感觉这个软件真是很方便 回复 2# afan
A版,能讲解一下楼主正则的问题所在吗?还有你那个正则没有看明白,可否讲解一下? 本帖最后由 afan 于 2014-6-24 13:25 编辑
回复 8# haijie1223
大概的意思是
LZ的“(\d+)元|(\.\d+)元”
| 隔断的各段表达式,匹配时会从第一段开始,如果直到最后都未匹配则放弃。如果某段匹配到了,则如果前面有几段表达式的组能够匹配到就会几个空匹配。个人理解,不一定正确.
“(\d+(?:\.\d+)?)元”
是里面的 (?:\.\d+)? 没理解吗? (?:xxx) 这是一个非捕获组,后面的 ? 代表前面的表达式可有可无 回复 9# afan
谢谢A版,什么是非捕获组?不是很明白 回复 10# haijie1223
就是不分配组名、不能引用的组。 回复 11# afan
谢谢A版。永远学不完~ 用另一个测试器测试发现,楼主写的规则在匹配到小数的时候,第一段匹配规则匹配到的是字符串开头,估计虽然是小数的情况下,“(\d+)元”这一段也是成立的,可是不知是否优先级的问题,会将结果给最大匹配的“(\d+\.\d+)元”,所以“(\d+)元”就只能返回一个字符串开头的空白位置,这是否说明au3里的正则表达式对于可以匹配的但不是最佳匹配的都会返回一个这样的值呢? 学习。。。。。。。。。。。。。。。 非捕获组 学习了!
页:
[1]
2