日期:2014-05-20  浏览次数:20880 次

正则表达式取反问题
匹配要求不包含java的字符串

i like java,haha不匹配

i like jjjj,haha 匹配

必须正则表达式
很菜的问题,希望大家帮忙,搞定了就结贴.

------解决方案--------------------
/^((?!java).)*$/is
------解决方案--------------------
("^((?!java).)*$");
^:在默认情况下表示整个字符串的开始,对应的$表示字符串的结束

((?!java).)表示不包含java的任何字符(需要注意的是,.在默认情况下不匹配换行符)
*表示0或者任意次重复

======================================================
上面的代码还要修改一下:
把Pattern p = Pattern.compile("^((?!java).)*$");
改为Pattern p = Pattern.compile("^((?!java).)*$",Pattern.DOTALL);
在Pattern.DOTALL模式下,.就可以匹配任何字符,包括换行符

这所以要这样改是因为,String input = "sdfsdf"; 如果input包括换行符,比如说
换成 String input = "sdfsdf\n test"; 时if(m.matches()) 就找不到匹配的(可以去试下)