输入为(以'|'分隔文件名)
about.img|boy.gif|car.doc|xdogx.img
要求输出所有的图片文件名,但文件名中不能包含"dog",即输出的结果应
为about.img,boy.gif 我输入的表达式为
([^(|)(dog)]*)\.(img|gif)
输出为ut.img,y.gif,x.img
为什么不对呀?看来正则表达式并没有把dog当作整体来排除,而是排除文
件名中不含d,o,g三个字符的文件

解决方案 »

  1.   

    或者换成另一个问题,即如何匹配不含字符串'dog'的字符串,如abcdogsl不能匹配,而daobog能匹配
      

  2.   

    我想了半天没有写出这个pattern,
    有一个笨办法,
    第一次查找不限定那个 dog  ,查到MatchCollection中之后,
    在先是的时候再做一次过滤。就可以了。不过要多一道程序。
      

  3.   

    解决了,采用正则表达式的look ahead用法
    为了不致于混淆,将分隔符改成了'@',即输入为@[email protected]@[email protected]
    正则表达式为@((?![^@]*dog[^.]*)[^@]*)\.(img|gif)
      

  4.   

    我测试的结果,把xdogx.img也选出来了。