正则表达式中组的理解

在正则中,“组”表示一个总体,可分为捕获组和非捕获组。咱们能够结合生活中的例子来理解它,好比一部手机,组内的因素有必需和非必需之分,如手机能够有操做系统,也能够没有,但必定要有电池。正则表达式

下面举例说明:性能

这是验证邮箱的正则表达式:spa

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

这个正则涉及了多个非捕获组,如今咱们以@(?:[\w](?:[\w-]*[\w])?\.)+中的(?:[\w](?:[\w-]*[\w])?\.)+为例,这是验证邮箱地址中@符号后包括.部分的字符,如字符串@abc.com,这个表达式就是验证abc.,如今在这个表达式中把这部分验证做为一个总体,其中必需因素包括[\w].,便是说这部分字符串最基本包括如@a.com。因为这个组的量词为+,因此它能够为@a.a.a.com操作系统

如今再来看一下这个表达式里面的一个非捕获组(?:[\w-]*[\w])?。在示例字符串@a.com中,a.@com之间最起码的要素,在a.之间能够容许[w]-符号出现0次或屡次,若是仅此要求,这里写做(?:[\w-]*)就行了,关键是结尾不容许是-符号,能够是[\w][\w]即为这个组的必须因素,这个组的量词为?,表示它能够不出现或出现一次。举例子,邮箱中的字符串@a-b.是容许的,而@a-.是不容许的,由于-这个组中缺乏必须因素[\w]code

小结
1.当咱们要对正则中的某个子表达式的非必须要素和必须要素进行定义时每每就须要用组。2.若是一个正则中涉及到了多个组而这些组无需捕获则建议采用非捕获组,这样提升了正则引擎的性能。
相关文章
相关标签/搜索