javamatches
『壹』 java中matchs()的用法
我就說,這個問題這么沒人回答,原來是一個這么"泛"的問題,不好回答呀!簡單跟你說一下吧,matchs()這個方法中需要傳入一個參數,這個參數是一個字元串類型的。實際上,在執行的時候,JVM會把這個字元串參數理解成為正則表達式,然後實現正則匹配!正則匹配是一個大的議題,一點點篇幅說不清楚,你可以去想像一下你在使用系統搜索功能的時候,在搜索框中填寫的東西,那個就是正則表達式。然後,還是給你一個示例把:
public class Test{
public static void main(String args[])
{
String str="abcdefg";
//檢查"abcdefg"是否匹配"abcdefg"
System.out.println(str.matches("abcdefg"));
//檢查"abcdefg"是否匹配"abc"
System.out.println(str.matches("abc"));
//檢查"abcdefg"是否匹配 以abc開頭 後接任意字元(可以為空)
System.out.println(str.matches("^abc.*"));
//檢查"abcdefg"是否匹配 以abc開頭,以字母結束(可以為空)
System.out.println(str.matches("^abc[a-z]*"));
//檢查"abcdefg"是否匹配以任意字元開頭,以abc作為結尾
System.out.println(str.matches(".*abc$"));
}
}
執行結果:
true
false
true
true
false
『貳』 JAVA matches()與equals()有什麼區別
matches: 判斷字元是否與指定的 正則表達式 相匹配
equals : 判斷兩個字元串是否相等
舉例:
1. matches
String str = "123abc";
String regex = "^[0-9]+[a-c]+$";
System.out.println(str.matches(regex));
2. equals
String str1 = "ABC";
String str2 = "ABC";
System.out.println(str1.equals(str2));
一個是判斷是否符合正則表達式規則,另一個是判斷是否兩個字元串相等
『叄』 java里.matches方法有什麼用
java.lang包中的String類,java.util.regex包中的Pattern,Matcher類中都有matches()方法。
都與正則表達式有關。下面我分別舉例:(字元串:"abc",正則表達式: "[a-z]{3}")
String類的方法:
boolean b = "abc".matches("[a-z]{3}"
System.out.println(b);
Pattern類中的方法:
boolean b = Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher類中的方法:
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b)
『肆』 java matches 作用
Java String.matches():字元串是否匹配給定的正則表達式
實例
下面的例子顯示使用的java.lang.String.matches()方法.
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "tutorials", str2 = "learning";
boolean retval = str1.matches(str2);
// method gets different values therefore it returns false
System.out.println("Value returned = " + retval);
retval = str2.matches("learning");
// method gets same values therefore it returns true
System.out.println("Value returned = " + retval);
retval = str1.matches("tuts");
// method gets different values therefore it returns false
System.out.println("Value returned = " + retval);
}
}
編譯和運行上面的程序,這將產生以下結果:
Value returned = false
Value returned = true
Value returned = false
『伍』 java中matches的作用
在java裡面有三個類有這個方法:一個是String類:matches裡面寫一個正則表達式,所有符合這個正規表達式的都會返回true。另一個是Matcher類:方法與String的類似。還有一個是Pattern類裡面的matches()方法,這個方法沒有參數,它的作用是嘗試將整個區域與模式(即Pattern對象構造的正則表達式)匹配。
『陸』 java中的matches()方法怎麼用在哪一個包中
這是我的總結:
java.lang包中的String類,java.util.regex包中的Pattern,Matcher類中都有matches()方法。
都與正則表達式有關。下面我分別舉例:(字元串:"abc",正則表達式: "[a-z]{3}")
String類的方法:
boolean b = "abc".matches("[a-z]{3}"
System.out.println(b);
Pattern類中的方法:
boolean b = Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher類中的方法:
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b);
得到的結果都為true。
『柒』 Java中正則Matcher類的matches,lookAt和find的區別
在Matcher類中有matches、lookingAt和find都是匹配目標的方法,但容易混淆,整理它們的區別如下:
matches:整個匹配,只有整個字元序列完全匹配成功,才返回True,否則返回False。但如果前部分匹配成功,將移動下次匹配的位置。
lookingAt:部分匹配,總是從第一個字元進行匹配,匹配成功了不再繼續匹配,匹配失敗了,也不繼續匹配。
find:部分匹配,從當前位置開始匹配,找到一個匹配的子串,將移動下次匹配的位置。
reset:給當前的Matcher對象配上個新的目標,目標是就該方法的參數;如果不給參數,reset會把Matcher設到當前字元串的開始處。
使用示例代碼來展示他們的區別更清晰明了:
packagenet.oseye;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassIOTest{
publicstaticvoid
main(String[]args){
Patternpattern=Pattern.compile("\d{3,5}");
StringcharSequence="123-34345-234-00";
Matchermatcher=pattern.matcher(charSequence);
//雖然匹配失敗,但由於charSequence裡面的"123"和pattern是匹配的,所以下次的匹配從位置4開始
print(matcher.matches());
//測試匹配位置
matcher.find();
print(matcher.start());
//使用reset方法重置匹配位置
matcher.reset();
//第一次find匹配以及匹配的目標和匹配的起始位置
print(matcher.find());
print(matcher.group()+"-"+matcher.start());
//第二次find匹配以及匹配的目標和匹配的起始位置
print(matcher.find());
print(matcher.group()+"-"+matcher.start());
//第一次lookingAt匹配以及匹配的目標和匹配的起始位置
print(matcher.lookingAt());
print(matcher.group()+"-"+matcher.start());
//第二次lookingAt匹配以及匹配的目標和匹配的起始位置
print(matcher.lookingAt());
print(matcher.group()+"-"+matcher.start());
}
publicstaticvoid
print(Objecto){
System.out.println(o);
}
}
輸出結果:
false
4
true
123 - 0
true
34345 - 4
true
123 - 0
true
123 - 0
『捌』 java Matches正則表達式問題
一個整數n如果是3的x次方,那把這個整數轉換成3進制的字元串後只可能是:
1 3^0
10 3^1
100 3^2
...
1...x個0 3^x
所以,如果3進制字元串能夠匹配1後跟0個或多個0,就說明n是3的某次方。
10*$就是匹配一個1後跟0個或多個0,然後是字元串結尾(用$來匹配)。
*表示匹配前面的模式0次或多次。
$表示匹配字元串的結尾。
『玖』 JAVA String.matches的用法
如果僅僅是看a裡面是否存在b,用a.contains(b)這個方法即可。
你用matchs方法當然也可以,但你那麼寫肯定是不行的。用a,matches(b),這個b要求是一個正則表達式,如果你一定要用這種方式判斷,建議你了解一下正則表達式的相關語法,也很簡單。