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