![]()
此時matches和equals顯示的結果相同,回傳值都為true,但實際上matches的功能更為強大,可以匹配符合一個模式的字串集,
如: System.out.println("Java is cool".matches("Java.*"));
顯示的結果同樣為true,Java.*為正則運算式,下面將簡要介紹正則運算式的功能,
1.matches(“x”),匹配的是指定的字符x;
System.out.println("Java".matches("B")); 輸出false
System.out.println("Java".matches("J")); 輸出true
2.matches("."),匹配的是任意單個字符(換行符除外);
System.out.println("Java".matches("J..a")); 輸出true
System.out.println("Javb".matches("J..a")); 輸出false
3.matches(“(ab|cd)”),匹配的是ab或者cd;
System.out.println("ef".matches("ab|cd")); 輸出false
System.out.println("ab".matches("ab|cd")); 輸出true
System.out.println("cd".matches("ab|cd")); 輸出true
4.matches("[abc]"),匹配的是a或者b或者c;
System.out.println("Java".matches("Ja[uxve]a")); 輸出true System.out.println("Java".matches("Ja[uxwe]a")); 輸出false
5.matches("[^abc]"),匹配的是除了a或者b或者c以外的任何字符;
System.out.println("Java".matches("Ja[^uxwe]a")); 輸出true
System.out.println("Java".matches("Ja[^uxve]a")); 輸出false
6.matches("[a-z]"),匹配的是a到z;
System.out.println("Java".matches("Ja[u-z]a")); 輸出true
System.out.println("Java".matches("Ja[a-f]a")); 輸出false
7.matches("[^a-z]"),匹配的是a到z以外的任意字符;
System.out.println("Java".matches("Ja[^a-f]a")); 輸出true
System.out.println("Java".matches("Ja[^u-z]a")); 輸出false
8..matches("[a-e[m-p]]"),匹配的是a到e或者m到p;
System.out.println("Java".matches("Ja[u-z[a-d]]a")); 輸出true
System.out.println("Java".matches("Ja[h-m[a-d]]a")); 輸出false
9.matches("[a-e&&[c-p]]"),匹配的是a到e和c到p的交集;
System.out.println("Java".matches("Ja[h-m[h-l]]a")); 輸出false
System.out.println("Java".matches("Ja[a-x[u-x]]a")); 輸出true
10.matches("\\d"),匹配的是一位數字(等同于[0~9]);
System.out.println("Java2".matches("Java(\\d)")); 輸出true
System.out.println("Javaa".matches("Java(\\d)")); 輸出false
11.matches("\\D"),匹配的是一位非數字;
System.out.println("Javaa".matches("Java(\\D)")); 輸出true
System.out.println("Java2".matches("Java(\\D)")); 輸出false
12.matches("\\w"),匹配的是單詞字符(單詞字符是所有的字母,數字和下劃線字符);
System.out.println("Javaa".matches("Java(\\w)")); 輸出true
System.out.println("Java$".matches("Java(\\w)")); 輸出false
13.matches("\\W"),匹配的是非單詞字符;
System.out.println("Java$".matches("Java(\\W)")); 輸出true
System.out.println("Java2".matches("Java(\\W)")); 輸出false
14.matches("\\s"),匹配的是空白字符;
System.out.println("Java ".matches("Java(\\s)")); 輸出true
System.out.println("Javaa".matches("Java(\\s)")); 輸出false
15.matches("\\S"),匹配的是非空白字符;
System.out.println("Javaa".matches("Java(\\S)")); 輸出true
System.out.println("Java ".matches("Java(\\S)")); 輸出false
16.matches("p*"),匹配的是0或者多次出現模式p;
System.out.println("abab".matches("(ab)*")); 輸出true
System.out.println("aaaa".matches("(ab)*")); 輸出false
17.matches("p+"),匹配的是1次或者多次出現模式p;
System.out.println("able".matches("(ab)+.*")); 輸出true
System.out.println("a".matches("a+b*")); 輸出true
System.out.println("c".matches("a+b*")); 輸出false
18.matches("p?"),匹配的是0或者1次出現模式p;
System.out.println("Java".matches("J?Java")); 輸出true
System.out.println("ava".matches("J?ava")); 輸出true
System.out.println("Java".matches("J?Mava")); 輸出false
19.matches("p{n}"),匹配的是正好出現n次模式p;
System.out.println("Java".matches("Ja{1}.*")); 輸出true
System.out.println("Java".matches(".{2}")); 輸出false
20.matches("p{n,}"),匹配的是至少出現n次模式p;
System.out.println("aaaa".matches("a{1,}")); 輸出true
System.out.println("aaaa".matches("a{5,}")); 輸出false
21.matches("p{n,m}"),匹配的是出現n到m次(兩側都包含)模式p;
System.out.println("aaaa".matches("a{1,4}")); 輸出true
System.out.println("aaaa".matches("a{6,8}")); 輸出false
22.matches("\p{P}"),匹配的是一個標點字符;
System.out.println("J?a".matches("J\\p{P}a")); 輸出true
System.out.println("Jaa".matches("J\\p{P}a")); 輸出false
====================================================
"*"等同于{0,},"+"等同于{1,},"?"等同于"{0,1},
其中*,?,{n},{n,},{n,m},+被稱為量詞符,要注意不要在重復量詞符中使用空白,
替換和拆分字串
replaceFirst的作用是替換匹配到的第一個字串
System.out.println("Java Java Java".replaceFirst("v\\w","wi")); 輸出Jawi Java Java
replaceAll的作用是替換匹配到的所有字串
System.out.println("Java Java Java".replaceAll("v\\w","wi")); 輸出Jawi Jawi Jawi
拆分
split(regex)方法使用使用匹配的分隔符將一個字串分割成子字串,
split(regex,limit)方法,limit引數確定模式匹配多少次,如果limit<=0,則此方法等同于第一種方法,反之,則最多匹配limit-1次,
注意:默認情況下,量詞符都是盡可能多次地進行匹配,
例如:System.out.println("Jaaavaa".replaceFirst("a+", "R")); 輸出JRvaa
可以通過在后面加"?"的方法來減少匹配的次數,
例如:System.out.println("Jaaavaa".replaceFirst("a+?", "R"));
此時就會輸出JRaavaa
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/342196.html
標籤:java
上一篇:槃星—第4天任務—動態令牌
