// 以h开头的
p("hello sir".matches("^h.*"));//true 说明^ 行的开头 .*代表任意字符出现零次或者多次
p("hello sir".matches("^a.*"));//false
p("h".matches("^h.*"));//true
p("hello sir".matches(".*ir$"));//true $行的结尾,本句是以ir结尾的字符
p("hello sir".matches(".*i$"));//false
p("hello sir".matches(".*r$"));//true
p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));//true \b代表单词边界,比如空格,空白字符换行符
p("hello sir".matches("^h[a-z]{1,3}o.*"));//true
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));//false
p("hello\\nsir".matches("^h[a-z]{1,3}o\\b.*"));//true
p("hello\nsir".matches("^h[a-z]{1,3}o\\b.*"));//false注意\n只有一个斜线是错误匹配
// 空白行
p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//true 表示开头的是空白字符,但是不是换行符,出现零次或者多次,结尾是换行符
p("aaa 8888c".matches(".*\\d{4}."));//true
p("aaa8888c".matches("^a..\\d{4}."));//true
p("aaa 8888c".matches("^a..\\d{4}."));//false,注意还有空白字符,所以两个点不行
p("aaa 8888c".matches("^a...\\d{4}."));//true
p("aaa 8888c".matches(".*\\b\\d{4}."));//true这里和\\b匹配的是一个空白符
p("aaa8888c".matches(".*\\d{4}."));//true
p("aaa8888c".matches(".*\\b\\d{4}."));//false 因为没边界所以错误
p("aaa 8888c".matches("^a...\\d{4}c$"));//true
p("aaa 8888c".matches("a{3}.\\d{4}c$"));//true
p("aaa 8888c".matches("a{3} \\d{4}c$"));//true
//注意下面两个,第二个由于少了一个空格,所以是错误的,需要注意
p("aaa 8888c".matches("a{3} \\b\\d{4}c$"));//true
p("aaa 8888c".matches("a{3}\\b\\d{4}c$"));//false因为{3}后面少了一个空格
public static void p(Object o) {
System.out.println(o);
}