Java常用API(三)Pattern 正则表达式
1. 一個用于指定規則的類
正則Regex , 在java中正則形成了一個單獨的包 java.util.regex , 代表正則的類 --- Pattern 正則表達式本質上適用于指定匹配或篩選規則的一系列表達式 。2. matches(regex)
[ ] : 表示一個字符。 ?[abc] ?匹配a\b\c中任意一個字符
- : 用于表示范圍 。 ?[a-z] ?匹配a~z中任意一個字符
^ : 表示過濾。 ? ? ?[^a] ?匹配除a意外任意字符
. : 表示任意一個字符。 ?[ .] 匹配任意一個字符 ?,若想匹配一個"." ?則需要轉義,java中用\表示后面的字符需要轉義,在正則表達式中"\"也需要轉義,所以"\\."表示匹配一個"."。
\d : 表示匹配 一個數字 。?
\D :表示匹配一個非數字。
\s: 表示匹配一個空白字符。
\S : 表示匹配一個非空白字符
\w : 表示匹配一個單詞字符
+ : 表示至少出現一次。 ?"a.+" 匹配以"a"開頭至少有兩個字符組成的字符串。
*?:表示可有可無。 "a.*" 匹配以"a" 開頭 的任意字符串。
? : 表示出現0或1次?"a.?" 匹配以"a"開頭最多有兩個字符組成的字符串 。
{ } : 表示出現次數".{5}" ?表示由5個字符組成的字符串;".{5,}" 表示至少由5個字符組成的字符串 ;".{5,10}" 表示由5~10個字符組成的字符串。
補充:\r回車:光標移至初始位置 ? ?\n 換行 : 光標移至下一行 ? ?JDK1.7以后不再區分。
() : 表示一盒捕獲組 ?".*(abc).*" 匹配含有abc的字符串。捕獲組會自動編號,下次想使用時可用編號"\\1"”引用。 ".*(abc).*\\1.*" 匹配含有與兩個abc的字符串。捕獲組編號規則:(第一的出現的位置開始計算。 匹配疊字: "(.)\\1+" ? ?;匹配ABAB格式的字符串 :"(..)\\1
注意:"(.){2}" 表示出現兩次,內容可以不同 ? ? ?"(.)\\1" 表示出現兩次,內容必須相同 。
?練習: 1.匹配小數
2. 匹配郵箱
3. 匹配密碼 :6~12位 ,至少有小寫字母、大寫字母、數字、符號中的三種組成。?
/*** 匹配小數* */public static void regexsmallNum(String str){System.out.println(str.matches("0\\.\\d+")||str.matches("[1-9]\\d*\\.\\d+"));}/*** 匹配郵箱* */public static void regexEmail(String str){System.out.println(str.matches("[0-9a-zA-Z]+_*[0-9a-zA-Z]*@[0-9a-zA-Z]+(\\.(com|cn)){1,2}"));}/*** 密碼匹配* 6~12位 至少由 大寫、小寫、數字、空格中的三個* */public static boolean regexPassword(String str){//判斷參數是否為空if(str ==null){return false;}//判斷密碼位數if(!str.matches(".{6,12}")){return false;}int i = 0; // 記錄字符種類//判斷是否含有小寫字母if(str.matches(".*[a-z].*")){i++;}//判斷是否出現大寫字母if(str.matches(".*[A-Z].*")){i++;}//判斷是否出現數字if(str.matches(".*[0-9].*")){i++;}//判斷是否出現空格if(str.matches(".*( ).*")){i++;}//判斷字符個數if(i>2){return true;}return false;}3. replaceAll("\d","-"); ? 將有數字替換為"-"
replace() 只能替換普通字符或字符串 ,replaceAll() 支持正則表達式。 練習: 記錄字符串中每個字符出現的個數 /*** 記錄字符串中每個字符出現的次數* */public static void printNum(String str){int length = 0;while(str.length()>0){length = str.length();char c = str.charAt(0);str = str.replace(c+"", "");System.out.println(c+":"+(length - str.length()));}}補充: 二十四個常用正則表達式(摘自:http://www.jb51.net/article/34155.htm)
總結
以上是生活随笔為你收集整理的Java常用API(三)Pattern 正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java常用API(二)String
- 下一篇: Java常用API (四) 包装类