java:正则表达式字符类/预定义字符类/Greedy 数量词的使用

字符类:
[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一次也没有出现,但是也不能出现别的字符
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值