测试数据:
比方上面这几条简朴的日记条目,我们想完成两个目的:
1、把8号的数据过滤掉;
2、把那些不包括robots.txt字符串的条目给找出来(只需Url中包括robots.txt的都给过滤掉)。
前瞻的语法是:
(?!婚配形式)
我们先来完成第一个目的——婚配不以特定字符串开首的条目。
这里我们由于要消除一段一连的字符串,因而婚配形式异常简朴,就是2009-07-08。完成以下:
^(?!2009-07-08).*?$
用Expresso我们能够看到结果确切过滤掉8号的数据。
接下来,我们来完成第二个目的——消除包括特定字符串的条目。
根据我们上面写法,我照葫芦画瓢了一下:
^.*?(?!robots\.txt).*?$
这段正则用大白话形貌就是:开首恣意字符,然后背面不要随着robots.txt一连字符串,然后再随着恣意个字符,字符串末端。
运转测试,结果发明:
没有到达我们想要的结果。这是为何呢?我们给上面的正则表达式加上两个捕捉分组调试一下:
^(.*?)(?!robots\.txt)(.*?)$
测试结果:
我们看到,第一个分组啥都没有婚配到,而第二个分组却婚配了全部字符串。再回过头来好好剖析一下适才谁人正则表达式。
实际上,当正则引擎剖析到A区 域的时刻,就已最先实行B地区的前瞻事情。这个时刻发明当A地区为Null的时刻婚配胜利——.*本来就许可婚配空字符,前瞻前提又满足,A地区背面紧 随着的是“2009”字符串,而并非robots。因而全部婚配历程胜利婚配到一切条目。
剖析出缘由以后我们对上述的正则举行修改,将.*?移入前瞻表达式,以下:
^(?!.*?robots).*$
测试结果:
引荐教程:java开辟入门
以上就是java运用正则表达式婚配不包括某个划定规矩的字符串的细致内容,更多请关注ki4网别的相干文章!