有什么用

非捕获类,在正则很简单时,没什么用,只有在正则中大量使用()时才有用

详细说明-举例说明

匹配2013-05-07,你可以用\d{4}-\d{2}-\d{2},你也可以加个括号(\d{4})-(\d{2})-(\d{2}),意思是完全一样的,但加了括号,就意味括号里面的东西,你捕获到了,你可以再使用,这就是捕获组的概念

上面这种情况,你是没必要加括号,但是,有时候你必不得已要加括号,比如说匹配1-100的数字,你会用^([1-9]?[0-9]|100)$,但是这个时候,会默认把括号里的东西捕获过来以供你下次使用,其实,你只是用着正则匹配而已,因此就造成了内存浪费,当正则复杂时,效率更加低下,因此才有了非捕获组,上面的就可以改写成^(?:[1-9]?[0-9]|100)$

小结

非捕获组跟匹配没什么关系,只是为了提高效率

posted on 2013-05-07 20:40  MrMission  阅读(5330)  评论(0编辑  收藏  举报