X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
“. * + ?” 在正则表达式中用特定的意义,灵活使用可以方便表示不同的模式,具体内容可以参见 API 文档的 Pattern 类的内容,在这里举一个例子来表示:
1 p("a".matches(".")); //true 2 p("aa".matches("aa")); //true 3 p("aaaa".matches("a*")); //true 4 p("aaaa".matches("a+")); //true 5 p("".matches("a*")); //true 6 p("".matches("a?")); //true 7 p("aaaa".matches("a?")); //false 8 p("a".matches("a?")); //true 9 p("2345236426".matches("\\d{3,10}")); //true 10 p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")); //false 11 p("192".matches("[0-2][0-9][0-9]")); //true
“[ ]”,其中中括号里面的内容表示单个字符的范围,里面可以嵌套中括号。
1 p("a".matches("[abc]")); //true 2 p("a".matches("[^abc]")); //false 3 p("A".matches("[a-zA-Z]")); //true 4 p("A".matches("[a-z]|[A-Z]")); //true 5 p("A".matches("[a-z[A-Z]]")); //true 6 p("R".matches("[A-Z && [RGB]]")); //true
以下是 java 的预定义字符类:
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
举例:
1 p(" \n\r\t".matches("\\s{4}")); //true 2 p(" ".matches("\\S")); //false 3 p("a_8".matches("\\w{3}")); //true 4 p("abas123&*^".matches("[a-z]{1,4}\\d+[&*^%]+")); //true 5 p("\\".matches("\\\\")); //true
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
\z | 输入的结尾 |
举例:
1 p("hello sir".matches("^h.*")); //true 2 p("hello sir".matches(".*ir$")); //true 3 p("hello sir".matches("^h[a-z]{1,3}o\\b.*")); //true 4 //空白行处理 5 p(" \n".matches("^[\\s&&[^\\n]]*\\n")); //true
原文:http://www.cnblogs.com/skyke/p/4992201.html