JDK6笔记(3)----正则表达式
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);
?}
}
?
轉載于:https://www.cnblogs.com/yangjin-55/archive/2007/03/26/2787037.html
總結
以上是生活随笔為你收集整理的JDK6笔记(3)----正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天会见广州用友的SALER
- 下一篇: ActionScript 3.0 概要