regular expression ---正則表達式 --- REGEX 的一些補充

接着昨天的正則表達式,今天接着作一些補充:java

先上兩個練習:正則表達式

 
練習:
1.郵箱格式的校驗:
2607509766@qq.com    langang@163.com    langang@tedu.cn langang@sina.com.cn(只能出現一次com)
解析:在前面是一個數字字母的6到32個的情形,接着直接寫一個@,後面是數字字母的至少一個的情形,接着一個點(須要轉義),再前面是一個com(用一個捕獲組表示)點後面,直接另外一個捕獲組(cn)便可,這裏能夠用到一個 || 將兩種情形分開.
package cn.tedu.regex; /** * 1.郵箱格式的校驗: 2607509766@qq.com langang@163.com langang@tedu.cn langang@sina.com.cn(只能出現一次com) * @author 唐雕 * */
public class PatternExer3 { public static void main(String[] args) { String email = "iwouuu98489@qq.com"; //用()裏面就能夠增長一連串的東西了
        System.out.println(email.matches("[a-zA-Z0-9]{6,32}@[a-zA-Z0-9]+(\\.com)") || email.matches("[a-zA-Z0-9]{6,32}@[a-zA-Z0-9]+(\\.com)?(\\.cn)")); } }
 
2.輸入一個字符串,統計其中每個字符出現的次數
解析:用到字符串的replaceAll(),裏面填寫一個正則表達式,用空串代替。而後就是原長度-如今長度就是這個字符的次數,輸出便可。
package cn.tedu.regex; import java.util.Scanner; /** * 5. 輸入一個字符串,統計其中每個字符出現的次數 * @author 唐雕 * */
public class PatternExer1 { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.next(); getCount(str); } //這個方法
    public static void getCount(String str){ if(str == null) System.out.println("輸入不合法!!"); while(str.length() > 0) { char c = str.charAt(0); int len = str.length(); str = str.replaceAll("" + c, "");//怎麼將一個變量放到正則表達式中?直接用一個鏈接就是了,返回如今的字符串長度
 System.out.print(c + ":" + (len - str.length()) + " "); } } }

 

3.對於任意的字符串能夠認爲是由多組疊字或者單字來拼成的,這每一組疊字/單字都是字符串的碎片,計算一個字符串平均的碎片長度
aaabbbbbcddaaacc -> aaa bbbbb c dd aaa cc -> (3 + 5 + 1 + 2 + 3 + 2)/6 = 2.67
解析:原長度就是那個,後面就是每個的個數,同上,也是用到字符串的 replaceOf()方法,只是後面代替就是前面的那個,是一個疊字的情形!!
package cn.tedu.regex; /** * 3.對於任意的字符串能夠認爲是由多組疊字或者單字來拼成的,這每一組疊字/單字都是字符串的碎片,計算一個字符串平均的碎片長度 aaabbbbbcddaaacc -> aaa bbbbb c dd aaa cc -> (3 + 5 + 1 + 2 + 3 + 2)/6 = 2.67 * @author 唐雕 * */
public class PatternExer3 { public static void main(String[] args) { String str = "aaabbbbbcddaaacc"; //記錄字符串的原長度
        int len = str.length(); //將字符串中疊字替換爲單字,而後求出長度,也就是個數
        str = str.replaceAll("(.)\\1+", "$1"); System.out.println(len*1.0/str.length());//絕大部分小數轉化爲二進制在計算機中進行存儲的時候,都會產生舍入偏差, //因此結果是一連串的小數!!
 } /* //這個方法 public static double getAverage(String str){ //怎麼拆開? //碎片個數,將所有的疊字去掉 }*/ }

 

好了,好了,好了,先簡單回顧一下基礎吧!以後在實際開發中,還須要進一步的介紹,下一篇隨筆,就開始回顧包裝類,數學類和抽象類吧!!spa

相關文章
相關標籤/搜索