import java.util.*; import java.util.regex.*; public class Test { public static boolean match(String s) { boolean b = true; Pattern p = Pattern.compile("java"); Matcher m = p.matcher(s); while(m.find()) { b = false ; } return b; //如果找不到java返回真!否则返回假 }
public static void main(String[] args){ System.out.println("输入一行字符串"); Scanner scan = new Scanner(System.in); String s = scan.nextLine(); System.out.println(match(s)); }
}
楼上的不行啊 String input = "sdfsdf"; Pattern p = Pattern.compile("/^((?!java).)*$/is"); Matcher m = p.matcher(input); if (m.matches()) { System.out.println(m.group()); }1楼哪种太简单不行因为我还要嵌套在一个大的正则表达式里面
String input = "sdfsdf"; Pattern p = Pattern.compile("^((?!java).)*$"); Matcher m = p.matcher(input); if(m.matches()) { System.out.println(m.group()); }
import java.util.regex.*; public class Test {
public static boolean match(String s) {
boolean b = true;
Pattern p = Pattern.compile("java");
Matcher m = p.matcher(s);
while(m.find()) {
b = false ;
}
return b; //如果找不到java返回真!否则返回假
}
public static void main(String[] args){
System.out.println("输入一行字符串");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(match(s));
}
}
String input = "sdfsdf";
Pattern p = Pattern.compile("/^((?!java).)*$/is");
Matcher m = p.matcher(input);
if (m.matches()) {
System.out.println(m.group());
}1楼哪种太简单不行因为我还要嵌套在一个大的正则表达式里面
Pattern p = Pattern.compile("^((?!java).)*$");
Matcher m = p.matcher(input);
if(m.matches()) {
System.out.println(m.group());
}
((?!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()) 就找不到匹配的(可以去试下)
是真正的高手啊