您好,登錄后才能下訂單哦!
本文實例講述了Java matches類,Pattern類及matcher類用法。分享給大家供大家參考,具體如下:
Pattern類
正則表達(dá)式常見規(guī)則
A:字符
x 字符 x。舉例:'a'表示字符a
\\ 反斜線字符。
\n 新行(換行)符 ('\u000A')
\r 回車符 ('\u000D')
B:字符類
[abc] a、b 或 c(簡單類),其中一個
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(nèi)(范圍)
[0-9] 0到9的字符都包括
C:預(yù)定義字符類
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 數(shù)字:[0-9]
\w 單詞字符:[a-zA-Z_0-9]
在正則表達(dá)式里面組成單詞的東西必須有這些東西組成
D:邊界匹配器
^ 行的開頭
$ 行的結(jié)尾
\b 單詞邊界
就是不是單詞字符的地方。
舉例:hello world?haha;xixi
E:Greedy 數(shù)量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
正則表達(dá)式的常見功能
A:判斷功能
String類的public boolean matches(String regex)
//定義手機(jī)號碼的規(guī)則 String regex = "1[38]\\d{9}"; //調(diào)用功能,判斷即可 boolean flag = phone.matches(regex);
fengqingyang@sina.com.cn
//定義郵箱的規(guī)則 String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+"; //調(diào)用功能,判斷即可 boolean flag = email.matches(regex);
B:分割功能
String類的public String[] split(String regex)
//定義一個年齡搜索范圍 String ages = "18-24"; //定義規(guī)則 String regex = "-"; //調(diào)用方法 String[] strArray = ages.split(regex); String s2 = "aa.bb.cc"; String[] str2Array = s2.split("\\."); //硬盤上的路徑,我們應(yīng)該用\\替代\ String s4 = "E:\\JavaSE\\day14\\avi"; String[] str4Array = s4.split("\\\\");
把字符串分割排序
package cn.itcast_03; import java.util.Arrays; /* * 我有如下一個字符串:"91 27 46 38 50" * 請寫代碼實現(xiàn)最終輸出結(jié)果是:"27 38 46 50 91" * * 分析: * A:定義一個字符串 * B:把字符串進(jìn)行分割,得到一個字符串?dāng)?shù)組 * C:把字符串?dāng)?shù)組變換成int數(shù)組 * D:對int數(shù)組排序 * E:把排序后的int數(shù)組在組裝成一個字符串 * F:輸出字符串 */ public class RegexTest { public static void main(String[] args) { // 定義一個字符串 String s = "91 27 46 38 50"; // 把字符串進(jìn)行分割,得到一個字符串?dāng)?shù)組 String[] strArray = s.split(" "); // 把字符串?dāng)?shù)組變換成int數(shù)組 int[] arr = new int[strArray.length]; for (int x = 0; x < arr.length; x++) { arr[x] = Integer.parseInt(strArray[x]); } // 對int數(shù)組排序 Arrays.sort(arr); // 把排序后的int數(shù)組在組裝成一個字符串 StringBuilder sb = new StringBuilder(); for (int x = 0; x < arr.length; x++) { sb.append(arr[x]).append(" "); } //轉(zhuǎn)化為字符串 String result = sb.toString().trim(); //輸出字符串 System.out.println("result:"+result); } }
C:替換功能
String類的public String replaceAll(String regex,String replacement)
package cn.itcast_04; /* * 替換功能 * String類的public String replaceAll(String regex,String replacement) * 使用給定的 replacement 替換此字符串所有匹配給定的正則表達(dá)式的子字符串。 */ public class RegexDemo { public static void main(String[] args) { // 定義一個字符串 String s = "helloqq12345worldkh722112345678java"; // 直接把數(shù)字干掉 String regex = "\\d+"; String ss = ""; String result = s.replaceAll(regex, ss); System.out.println(result); } }
D:獲取功能
Pattern和Matcher
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab");
find()
:查找存不存在
group()
:獲取剛才查找過的數(shù)據(jù)
package cn.itcast_05; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * 獲取功能 * Pattern和Matcher類的使用 * * 模式和匹配器的基本使用順序 */ public class RegexDemo { public static void main(String[] args) { // 模式和匹配器的典型調(diào)用順序 // 把正則表達(dá)式編譯成模式對象 Pattern p = Pattern.compile("a*b"); // 通過模式對象得到匹配器對象,這個時候需要的是被匹配的字符串 Matcher m = p.matcher("aaaaab"); // 調(diào)用匹配器對象的功能 boolean b = m.matches(); System.out.println(b); //這個是判斷功能,但是如果做判斷,這樣做就有點麻煩了,我們直接用字符串的方法做 String s = "aaaaab"; String regex = "a*b"; boolean bb = s.matches(regex); System.out.println(bb); } }
package cn.itcast_05; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * 獲取功能: * 獲取下面這個字符串中由三個字符組成的單詞 * da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu? */ public class RegexDemo2 { public static void main(String[] args) { // 定義字符串 String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?"; // 規(guī)則 String regex = "\\b\\w{3}\\b"; // 把規(guī)則編譯成模式對象 Pattern p = Pattern.compile(regex); // 通過模式對象得到匹配器對象 Matcher m = p.matcher(s); while (m.find()) { System.out.println(m.group()); } // 注意:一定要先find(),然后才能group() // IllegalStateException: No match found // String ss = m.group(); // System.out.println(ss); } }
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java正則表達(dá)式技巧大全》、《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java文件與目錄操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。