p("192".matches("[0-2][0-9][0-9]"));
p("a".matches("[abc]")); //abc中的一个即可
p("a".matches("[^abc]")); //取反,除了abc之外的
p("A".matches("[a-zA-Z]"));
p("R".matches("[A-Z]&&[RPG]")); //取并集
p("192.aaaAAA".matches("\\d{3,10}.[a-zA-z]{1,}")); //
结果:
true
true
false
true
false
true
说明:
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
p("\\".matches("\\\\"));
p("g_o".matches("\\w{3}"));
p(" ".matches("\\s"));
p(" \n\r\t".matches("\\s{4}"));
练习3:
Pattern p = Pattern.compile("\\d{3,5}");
String s = "123-45657-2345-00";
Matcher m = p.matcher(s);
p(m.matches()); //匹配的是整个字符串
m.reset(); //把吃掉的吐出来
p(m.find()); //找子串
p("子串的位置在:"+m.start()+" --"+m.end());
p(m.find());
p(m.lookingAt()); //每次找都是从开头找
运行结果:
false
true
子串的位置在:0 --3
true
true
Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);//大小写不敏感的
Matcher m = p.matcher("java Java JAVA YOU HATE JAVA i love jAVA tail aaaa");
// while(m.find()){
// p(m.group()); // 都是Matcher来操作的
// }
StringBuffer buf = new StringBuffer();
int i=0;
while(m.find()){
i++;
if(i%2 == 0)
m.appendReplacement(buf, "java"); //此方法比 replaceAll 灵活
else
m.appendReplacement(buf, "JAVA");
}
m.appendTail(buf);
HTML中的应用:
把所有的 <br> <br /> 等替换成回车
html = html.replaceAll("<br\\s*/*>", "\n");