Pattern和Matcher物件常用方法
轉載的:https://yq.aliyun.com/ziliao/412887
1.最簡單的模式匹配判斷
Pattern.matches(regex, str),它等同於Pattern.compile(regex).matcher(str).matches();
2.按模式分割字串
Pattern.compile(regex).split(str),它等同於str.split(regex)
3.Matcher物件
Matcher m = Pattern.compile(regex).matcher(str)
m.maches(),對整個字串進行匹配,整個字串都匹配才返回true.
m.lookingAt(),字串(str)以指定模式(regex)開始返回true
m.find(),字串(str)在任意位置指定匹配模式(regex)就返回true
在執行過上述返回boolean值的方法之後,可以執行m.start()、m.end()、m.group()返回匹配細節
m.start()匹配字串在母串中的index
m.end()匹配字串的最後一個字元在母串中的index+1
m.group()匹配到的字串
如果指定模式(regex)中包含分組(用小括號擴起來的部分),start、end和group方法也可以用引數指定獲取哪個分組的細節。容易忽略的是,整個模式自身算是第0個分組。例如:
m.start() == m.start(0);
m.end() == m.end(0);
m.group() == m.group(0);
Matcher m = Pattern.compile("([a-z]+)(\\d+)").matcher("fasf2334");
m.find();
m.start();//匹配到整個字串,開始索引是0
m.start(0);//等於m.start(),結果也是0
m.start(1);//匹配到第一個模式[a-z]+,也就是字串“fasf”,所以開始索引是0
m.start(2);//匹配到第二個模式\d+,也就是字串“2334”,所以開始索引是4
4.m.find()方法
由於m.find()方法可以匹配模式在字串中任意位置的出現,所以可能會匹配到多次。
Matcher m = Pattern.compile("\\d+").matcher("fasf2334ss22s");
while (m.find()) {
System.out.println(m.group());
System.out.println(m.start());
System.out.println(m.end());
System.out.println();
}
輸出結果為:
2334
4
8
22
10
12
以上是Pattern和Matcher物件常用方法的全部內容,在雲棲社群的部落格、問答、雲棲號、人物、課程等欄目也有Pattern和Matcher物件常用方法的相關內容,歡迎繼續使用右上角搜尋按鈕進行搜尋學習筆記 ,以便於您獲取更多的相關知識。