正則表達式 傳智播客學習
更新時間:2009年11月23日 00:05:27 作者:
今天是預熱班結束后的第二天,按照原定計劃,今天復習了正則表達式以及GUI方面的內容
有了一點點小小成就,五子棋游戲的基本功能已經實現(xiàn)的差不多了,還需要進行部分代碼優(yōu)化,期待明天的到來,因為明天我就可以實現(xiàn)我一個夢想,那就是晚上自己開發(fā)的游戲,呵呵!學在其中,樂在其中!下午實在有些腰酸背痛,決定就近去爬山,經過商議決定去百望山森林公園,真的是好久沒鍛煉了,才兩百多米的山爬完回來累的不行,不過也算是感受了一下大自然的風情,站在山頂的感覺真的很不錯,看著山下風景,突然感覺自己好渺小,這座城市如此之大,何時何處才是我安身之處?努力,我相信在不遠的未來,我相信我的選擇。吃過晚飯,看著張孝祥老師的Servlet的視頻,對Servlet進行了基礎的預習。下面對今天的學習成果和大家分享。
1.什么是正則表達式
一個正則表達式,就是用某種模式去匹配一類字符串的一個公式。個人覺得就是一個字符構成的串,它定義了一個用來搜索匹配字符串的模式。
2.正則表達式在字符串中的應用
備注:由于基本規(guī)則比較簡單,而且API中以及網絡上都有就不詳解了,下面主要總結下在字符串中的應用
正則表達式主要作用于字符串,功能有匹配,搜索,切割,替換
1) 匹配
這里主要通過String類的mathes方法實現(xiàn),只要將定義好的正則表達式作為參數傳入即可。
例:匹配字符串"123456789012345"是否是QQ號碼
String qq = "123456789012345";
String qqreg = "[1-9]\\d{4,14}";
System.out.print(qq.matches(qqreg ));
2) 搜索
建立正則規(guī)則,將規(guī)則封裝成對象(Pattern的compile),作用于字符串(Matcher),返回匹配器,利用匹配器作用字符串,找出需要的字符串)
例:取出字符串"ming tian wu zi qi jiu kai fa wan le !"兩個字母的單詞
String text = "ming tian wu zi qi jiu kai fa wan le !!";
String textreg = "\\b[a-z]{2}\\b";//取出兩個字母組成的單詞;
Pattern p = Pattern.compile(textreg);//將正則規(guī)則封裝成對象。
Matcher m = p.matcher(text);//通過正則對象獲取匹配器。意為:讓規(guī)則作用到字符串上。while(m.find())
System.out.println(m.group());
3) 切割
通過split方法實現(xiàn)
例:將字符串
String str = "sazzdkqqqqlfooojsz";
String strreg = "(.)\\1+";//"\\.";
String[] arr = str.split(strreg);
for(String s : arr)
{
System.out.println("s="+s);
}
4) 替換
通過字符串的repalceAll方法實現(xiàn)
例:將"10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254"按網段存放
String ip = "10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254";
ip = ip.replaceAll("(\\d+)","00$1");//在每一段的前面補兩個0.
ip = ip.replaceAll("0+(\\d{3})","$1"); //只保留每一段的最后三位。
String[] ipArr = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();//因為ip地址很多,需要使用容器存放,而且需要排序,TreeSet
for(String i : ipArr){ts.add(i);}
for(String i : ts){System.out.println(i.replaceAll("0*(\\d+)","$1"));}
3.常用正則表達式
1) 匹配空白行的正則表達式:\n\s*\r
2) 匹配首尾空白字符的正則表達式:^\s* ¦\s*$
3) 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
4) 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]*
5) 匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數字下劃線):^[a-zA-Z][a-zA- Z0-9_]{4,15}$
6) 匹配中國郵政編碼:[1-9]\d{5}(?!\d)
7) 匹配身份證:\d{15} ¦\d{18}
匹配中文字符的正則表達式: [\u4e00-\u9fa5]
1.什么是正則表達式
一個正則表達式,就是用某種模式去匹配一類字符串的一個公式。個人覺得就是一個字符構成的串,它定義了一個用來搜索匹配字符串的模式。
2.正則表達式在字符串中的應用
備注:由于基本規(guī)則比較簡單,而且API中以及網絡上都有就不詳解了,下面主要總結下在字符串中的應用
正則表達式主要作用于字符串,功能有匹配,搜索,切割,替換
1) 匹配
這里主要通過String類的mathes方法實現(xiàn),只要將定義好的正則表達式作為參數傳入即可。
例:匹配字符串"123456789012345"是否是QQ號碼
String qq = "123456789012345";
String qqreg = "[1-9]\\d{4,14}";
System.out.print(qq.matches(qqreg ));
2) 搜索
建立正則規(guī)則,將規(guī)則封裝成對象(Pattern的compile),作用于字符串(Matcher),返回匹配器,利用匹配器作用字符串,找出需要的字符串)
例:取出字符串"ming tian wu zi qi jiu kai fa wan le !"兩個字母的單詞
String text = "ming tian wu zi qi jiu kai fa wan le !!";
String textreg = "\\b[a-z]{2}\\b";//取出兩個字母組成的單詞;
Pattern p = Pattern.compile(textreg);//將正則規(guī)則封裝成對象。
Matcher m = p.matcher(text);//通過正則對象獲取匹配器。意為:讓規(guī)則作用到字符串上。while(m.find())
System.out.println(m.group());
3) 切割
通過split方法實現(xiàn)
例:將字符串
復制代碼 代碼如下:
String str = "sazzdkqqqqlfooojsz";
String strreg = "(.)\\1+";//"\\.";
String[] arr = str.split(strreg);
for(String s : arr)
{
System.out.println("s="+s);
}
4) 替換
通過字符串的repalceAll方法實現(xiàn)
例:將"10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254"按網段存放
String ip = "10.10.10.10 192.168.105.22 1.1.1.1 2.2.2.2 211.68.43.254";
ip = ip.replaceAll("(\\d+)","00$1");//在每一段的前面補兩個0.
ip = ip.replaceAll("0+(\\d{3})","$1"); //只保留每一段的最后三位。
String[] ipArr = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();//因為ip地址很多,需要使用容器存放,而且需要排序,TreeSet
for(String i : ipArr){ts.add(i);}
for(String i : ts){System.out.println(i.replaceAll("0*(\\d+)","$1"));}
3.常用正則表達式
1) 匹配空白行的正則表達式:\n\s*\r
2) 匹配首尾空白字符的正則表達式:^\s* ¦\s*$
3) 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
4) 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]*
5) 匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數字下劃線):^[a-zA-Z][a-zA- Z0-9_]{4,15}$
6) 匹配中國郵政編碼:[1-9]\d{5}(?!\d)
7) 匹配身份證:\d{15} ¦\d{18}
匹配中文字符的正則表達式: [\u4e00-\u9fa5]