js正则表达式-非捕获组
(?=X)X,通过零宽度的正lookahead。零宽度正先行断言,仅当子表达式X在此位置的右侧匹配时才继续匹配。例如,\w+(?=\d)表示字母后面跟数字,但不捕获数字(不回溯)
(?!X)X,通过零宽度的负lookahead。零宽度负先行断言。仅当子表达式X不在此位置的右侧匹配时才继续匹配。例如,\w+(?!\d)表示字母后面不跟数字,且不捕获数字。
(?<=X)X,通过零宽度的正lookbehind。零宽度正后发断言。仅当子表达式X在此位置的左侧匹配时才继续匹配。例如,(?<=19)99表示99前面是数字19,但不捕获前面的19。(不回溯)
(?(?>X)X,作为独立的非捕获组(不回溯)
(?=X)与(?>X)的区别在于(?>X)是不回溯的。例如被匹配的字符串为abcm
当表达式为a(?:b|bc)m是可以匹配的,而当表达式是a(?>b|bc)m时是不能匹配的,
因为当后者匹配到b时,由于已经匹配,就跳出了非捕获组,而不再次对组内的字符进行匹配。可以加快速度。
相关推荐
山水沐光 2020-05-26
peterwzc 2020-03-17
lidengfengboke 2017-02-22
niuyongaiai 2011-10-28
不要皱眉 2016-09-26
qianhaohong 2015-10-11
守love唯诺 2013-10-01
yoyoshadow 2013-06-03
gongg0 2013-01-21
李湘华 2012-10-11
人生若只如初见 2012-05-10