上一期讲到了反向引用,那什么是反向引用,咱们先来看一个demospa
其中1, 2的语法就叫作反向引用,他们分别表示捕获到的第一个,第二个内容,最多可使用到9,表示捕获到的第9个内容。
注意引用的,是捕获到的内容,而不是捕获规则。因此(\w)(\w)\1\2
表示的就是一个xyxy
的结构,所以匹配到了"cdcd"
。
下面举几个小栗子:3d
断言又有不少中叫法,好比环视,巡视。断言一共又分4种:code
不一样语言叫法不一样,先行后行,正向反向都是一个意思。blog
零宽能够理解位它表示的是一个位置,而不是内容。
正则中表示位置的元字符有\b ^ $
等等,它们也都是零宽的。
上面的两个demo,若是不用零宽断言,则会将整个字符串给替换掉。
下面也举几个零宽断言的例子:ip
这段正则能够看到,先行断言前面的匹配项是^
,几个断言分别表示,从头开始,无论中间经历了啥,始终有一个小写英文字母/大写英文字母/数字,特殊字符。
后面的[^\s]{8,12}
表示长度8到12的非空字符。要注意的是,这里的断言,匹配的不是后面的8到12位字符,而是知足断言条件的开头^
,字符串
正则只能从前日后匹配,这里表示若是一个数字后面跟着的数字,每三个一组,到小数点恰好分完,则须要加入分隔符。it
以上就是正则的反向引用和零宽断言了,是否是很简单?class