(?!exp):零宽负向先行断言,只会匹配后缀exp不存在的位置。
例如:/d{3}(?!/d)匹配三位数字,而且这三位数字的后面不能是数字。
(?<!exp)零宽负向后行断言,用来查找前缀exp不存在的位置。
例如:(?<![a-z])/d{7}匹配前面不是小写字母的七位数字
复杂一点的理解为:(?<=<(/w+)>).*(?=<///1>)匹配不包含属性的简单HTML标签内里的内容,(<?(/w+)>)指定了这样的前缀:被尖括号括起来的单词(比如可能是<b>),然后是.*(任意的字符串),最后是一个后缀(?=<///1>)。注意后缀里的//,它用到了前面提过的字符转义;/1则是一个反向引用,引用的正是捕获的第一组,前面的(/w+)匹配的内容,这样如果前缀实际上是<b>的话,后缀就是</b>了。整个表达式匹配的是<b>和</b>之间的内容(再次提醒,不包括前缀和后缀本身)。