字符类:
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
public class Demo2_Regex {
public static void main(String[] args) {
// TODO Auto-generated method stub
demo1();
demo2();
demo3();
demo4();
demo5();
demo6();
demo7();
}
private static void demo7() {
String regex="[a-z&&[^m-p]]";//[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
System.out.println("a".matches(regex));//true
System.out.println("x".matches(regex));//true
System.out.println("p".matches(regex));//false
System.out.println("m".matches(regex));//false
}
private static void demo6() {
String regex="[a-z&&[^bc]]";//[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
System.out.println("a".matches(regex));//true
System.out.println("b".matches(regex));//false
System.out.println("c".matches(regex));//false
}
private static void demo5() {
String regex="[a-z&&[def]]";//[a-z&&[def]] d、e 或 f(交集)等同于直接写[def]
System.out.println("a".matches(regex));//false
System.out.println("d".matches(regex));//true
System.out.println("f".matches(regex));//true
}
private static void demo4() {
String regex="[a-d[m-p]]";//a 到 d 或 m 到 p:[a-dm-p](并集)
System.out.println("a".matches(regex));//true
System.out.println("A".matches(regex));//false
System.out.println("p".matches(regex));//true
System.out.println("m".matches(regex));//true
System.out.println("1".matches(regex));//false
System.out.println("%".matches(regex));//false
}
private static void demo3() {
String regex="[a-zA-Z]";//[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
System.out.println("a".matches(regex));//true
System.out.println("A".matches(regex));//true
System.out.println("z".matches(regex));//true
System.out.println("Z".matches(regex));//true
System.out.println("1".matches(regex));//false
System.out.println("%".matches(regex));//false
}
private static void demo2() {
String regex="[^abc]";//[^abc] 任何字符,除了 a、b 或 c(否定)
System.out.println("a".matches(regex));//false
System.out.println("b".matches(regex));//false
System.out.println("c".matches(regex));//false
System.out.println("d".matches(regex));//true
System.out.println("1".matches(regex));//true
System.out.println("%".matches(regex));//true
System.out.println("10".matches(regex));//10是二个字符所以为false
}
private static void demo1() {
String regex="[abc]";//[]代表单个字符,[abc] a、b 或 c(简单类)
System.out.println("a".matches(regex));//true
System.out.println("b".matches(regex));//true
System.out.println("c".matches(regex));//true
System.out.println("d".matches(regex));//false
System.out.println("1".matches(regex));//false
System.out.println("%".matches(regex));//false
}
}
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
public class Demo3_Regex {
public static void main(String[] args) {
// TODO Auto-generated method stub
demo1();
demo2();
demo3();
demo4();
demo5();
demo6();
demo7();
}
private static void demo7() {
String regex="\\W";//\W 非单词字符:[^\w]
System.out.println("0".matches(regex));//false
System.out.println("9".matches(regex));//false
System.out.println("a".matches(regex));//false
System.out.println("_".matches(regex));//false
System.out.println("@".matches(regex));//true
}
private static void demo6() {
String regex="\\w";//\w 单词字符:[a-zA-Z_0-9]
System.out.println("0".matches(regex));//true
System.out.println("9".matches(regex));//true
System.out.println("a".matches(regex));//true
System.out.println("_".matches(regex));//true
System.out.println("@".matches(regex));//false
}
private static void demo5() {
String regex="\\S";//\S 非空白字符:[^\s]
System.out.println(" ".matches(regex));//false---空格
System.out.println(" ".matches(regex));//false--一个table键盘
System.out.println("a".matches(regex));//true
}
private static void demo4() {
String regex="\\s";//\s 空白字符:[ \t\n\x0B\f\r]
System.out.println(" ".matches(regex));//true---空格
System.out.println(" ".matches(regex));//true--一个table键盘
System.out.println(" ".matches(regex));//false--四个空格
}
private static void demo3() {
String regex="\\D";//\代表转义字符,如果想表示\d的话,需要\\d,表示除了0-9
System.out.println("0".matches(regex));//false
System.out.println("9".matches(regex));//false
System.out.println("a".matches(regex));//true
}
private static void demo2() {
String regex="\\d";//\代表转义字符,如果想表示\d的话,需要\\d,表示0-9
System.out.println("0".matches(regex));//true
System.out.println("9".matches(regex));//true
System.out.println("a".matches(regex));//false
}
private static void demo1() {
String regex=".";//. 任何字符
System.out.println("a".matches(regex));//true
System.out.println("ab".matches(regex));//false
}
}
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
public class Demo4_Regex {
public static void main(String[]args) {
demo1();
demo2();
demo3();
demo4();
demo5();
demo6();
}
public static void demo6() {
String regex="[abc]{3,5}";//X{n,m} X,至少 n 次,但是不超过 m 次
System.out.println("abc".matches(regex));//true
System.out.println("aaaabaa".matches(regex));//false
System.out.println("a".matches(regex));//false
}
public static void demo5() {
String regex="[abc]{3,}";//X{n,} X,至少 n 次
System.out.println("abc".matches(regex));//true
System.out.println("aaaabaa".matches(regex));//true
System.out.println("a".matches(regex));//false
}
public static void demo4() {
String regex="[abc]{3}";//X{n} X,恰好 n 次
System.out.println("abc".matches(regex));//true
System.out.println("abca".matches(regex));//false
System.out.println("a".matches(regex));//false
System.out.println("".matches(regex));//false
}
public static void demo3() {
String regex="[abc]+";//X+ X,一次或多次
System.out.println("abc".matches(regex));//true
System.out.println("a".matches(regex));//true
System.out.println("".matches(regex));//false
}
public static void demo2() {
String regex="[abc]*";//X* X,零次或多次
System.out.println("abc".matches(regex));//true
System.out.println("a".matches(regex));//true
System.out.println("".matches(regex));//true
}
private static void demo1() {
String regex="[abc]?";//X? X,一次或一次也没有 -x代表的任意字符 ,中括号里表示a或b或c
System.out.println("a".matches(regex));//true
System.out.println("b".matches(regex));//true
System.out.println("c".matches(regex));//true
System.out.println("d".matches(regex));//false
System.out.println("".matches(regex));//true--这个代表的a,b,c一次也没有出现,但是也不能出现别的字符
}
}