环视

环视正则

蓝咒 提交于 2019-12-17 12:33:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一.语法结构 1.环视结构不匹配任何字符,只匹配文本中的特定位置.也有人称之为零宽断言. 2.环视的特点 <1> 不会"占用"任何文本,只匹配一个"位置". <2> 只是简单的测试: 能够在当前位置匹配后面(右侧)的文本(顺序),或者能够在当前位置匹配前面(左侧)的文本(逆序). 3.环视类型及表达式 (?=…) 顺序肯定环视,从左至右,子表达式能够匹配右侧文本. (?!…) 顺序否定环视,从左至右,子表达式不能匹配右侧文本. (?<=…) 逆序肯定环视,从右至左,子表达式能够匹配左侧文本. (?<!…) 逆序否定环视,从右至左,子表达式不能匹配左侧文本. 3.限制 多数实现方式都限制了逆序环视中的表达式长度;而顺序环视则没有限制. 第一级;Perl和Python的限制是最严格的,逆序环视只能匹配固定长度的文本,也就是说逆序环视中不能使用量词(*、?、+、{m,n}).例如(?<!books?)就是不合法的,不过在某些情况下可以重写为(?<book)(?<!books). 第二级;PCRE(因为包括php)支持在逆序环视中出现多选分支,所以可以写为"(?<!book|books)".同样不能使用量词(?、*、+、{m,n}). 第三级;sun的Java regex package支持匹配任意长度的文本