regular expression ---正則表達式 --- REGEX 的一些補充
阿新 • • 發佈:2018-08-17
全部 can sta mat ner system spa ble ack
接著昨天的正則表達式,今天接著做一些補充:
先上兩個練習:
練習: 1.郵箱格式的校驗: [email protected] [email protected] [email protected] [email protected](只能出現一次com) 解析:在前面是一個數字字母的6到32個的情形,接著直接寫一個@,後面是數字字母的至少一個的情形,接著一個點(需要轉義),再前面是一個com(用一個捕獲組表示)點後面,直接另一個捕獲組(cn)即可,這裏可以用到一個 || 將兩種情形分開.package cn.tedu.regex; /** * 1.郵箱格式的校驗: [email protected] [email protected] [email protected] [email protected](只能出現一次com) *2.輸入一個字符串,統計其中每一個字符出現的次數 解析:用到字符串的replaceAll(),裏面填寫一個正則表達式,用空串代替。然後就是原長度-現在長度就是這個字符的次數,輸出即可。@author 唐雕 * */ public class PatternExer3 { public static void main(String[] args) { String email = "[email protected]"; //用()裏面就可以增加一連串的東西了 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)")); } }
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){ //怎麽拆開? //碎片個數,將全部的疊字去掉 }*/ }
好了,好了,好了,先簡單回顧一下基礎吧!之後在實際開發中,還需要進一步的介紹,下一篇隨筆,就開始回顧包裝類,數學類和抽象類吧!!
regular expression ---正則表達式 --- REGEX 的一些補充