JDK6筆記(3)—-正規表示式

chszs發表於2007-03-26
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/1541912

JDK6筆記(3)—-正規表示式

一、正規表示式的編譯形式
1)指定為字串的正規表示式必須首先被編譯為此類的例項。compile
2)將得到的模式用於建立Matcher物件。matcher
3)依照正規表示式,該物件可以於任意字元序列匹配。matches
例:
Pattern p=Pattern.compile(“a*b”);
Matcher m=P.matcher(“aaaaab”);
boolean b=m.matches();
二、規則
1)字元類
.   表示任何字元
[abc]   包含a、b、c的任何字元  (和a|b|c相同)
[^abc]   除a、b、c之外的任何字元 (否定)
[a-zA-Z]  任何從a到z或從A到Z的字元 (範圍)
[abc[hij]]  任意a、b、c、h、i、j字元 (與a|b|c|h|i|j相同)(合併)
[a-z&&[hij]]  任意h、i、j字元  (交)
/s   whitespace符   (空格、tab、換行、換頁、回車)
/S   非whitespace符  ([^/s])
/d   數字[0-9]
/D   非數字[^0-9]
/w   word character  ([a-zA-Z_[0-9])
/W   非word character  (^/w)
2)在Java中,“//”意味著正在插入一個正規表示式的反斜槓,隨後的字元具有特殊意義。
XY  XY
X|Y  X或Y
(X)  Capturing group
3)邊界匹配
^ 一行的開始
$ 一行的結束
/b 詞界
/B 非詞界
/G 上一級的結尾
4)量詞
?  0或1個
*  0或多個
+  1或多個
X{n}  X,恰好n次
X{n,}  X,至少n次
X{n,m}  X,至少n次,至多m次
三、字元序列
CharSequence介面,從String到StringBuffer類中抽象出。
interface CharSequence{
 charAt(int i);  //返回指定索引處的char值
 length();   //返回長度
 subSequence(int start,int end); //返回從索引start開始,end結束的子序列
 toString();   //返回字串
 }
四、在Java中,正規表示式是通過java.util.regex包裡面的Pattern和Matcher類來實現的。
1)Matcher.find()用於發現應用於CharSequence的多重模式匹配。
2)find(int start) 重置此匹配器,然後嘗試查詢匹配該模式、從指定索引開始的輸入序列的下一個子序列。
例:
package myfile;
import java.util.regex.*;
import java.util.*;
public class FindDemo {
 private static String str=”boolean contains(CharSequence s)  new Test()”;
 public static void main(String[] args) {  
  Matcher m=Pattern.compile(“//w+”).matcher(“Evening is full of the linnet`s wings”);
  while(m.find())
   System.out.println(m.group());
  int i=0;
  while(m.find(i)){
   i++;
   System.out.print(m.group()+” “);
  }
  System.out.println(“/n”+”i=”+i);
 }
}
 


相關文章