日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA正则表达式实例教程(转帖收藏)

發布時間:2025/3/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA正则表达式实例教程(转帖收藏) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
So many open source projects. Why not Open your Documents? 1 JAVA正則表達式實例教程 12/11/2008 1、正則表達式的知識要點 1、正則表達式是什么? 正則表達式是一種可以用于模式匹配和替換的強有力的工具。 2、正則表達式的優點? 更少的代碼,更高的效率。 3、正則表達式如何使用? 在下面的教程中我們將學習到正則表達式的用法。 4、正則表達式的缺點? 需要花一定的時間學習,這個時間由個人決定,一天或者更久一些。 2、正則表達式的各種符號及其含義 常用的符號 . 表示任意一個字符 \s 空格字符(空格鍵, tab, 換行, 換頁, 回車) \S 非空格字符([^\s]) \d 一個數字,(相當于[0-9] ) \D 一個非數字的字符,(相當于[^0-9] ) \w 一個單詞字符(word character) (相當于 [a-zA-Z_0-9] ) \W 一個非單詞的字符,[^\w] ^ 一行的開始 $ 一行的結尾 \b 一個單詞的邊界 \B 一個非單詞的邊界 \G 前一個匹配的結束 [] 匹配方括號內的一個字符 例如:[abc] 表示字符a,b,c中的任意一個(與a|b|c相同) [a-zA-Z] 表示從a到z或A到Z當中的任意一個字符 表示次數的符號 * 重復零次或更多次 例如:a* 匹配零個或者多個a + 重復一次或更多次 例如:a+ 匹配一個或者多個a ? 重復零次或一次 例如:a? 匹配零個或一個a {n} 重復n次 例如:a{4} 匹配4個a {n,} 重復n次或更多次 例如:a{4,} 匹配至少4個a {n,m} 重復n到m次 例如:a{4,10} 匹配4~10個a 2 JAVA正則表達式實例教程 12/11/2008 3、正則表達式實例 java正則表達式通過java.util.regex包下的Pattern類與Matcher類實現: 1、首先引入java包:java.util.regex 2、使用方法如下: 共分三步: ①構造一個模式. Pattern p=Pattern.compile("[a-z]*"); ②建造一個匹配器 Matcher m = p.matcher(str); ③進行判斷,得到結果 boolean b = m.matches(); Matcher類提供三個匹配操作方法,三個方法均返回boolean類型,當匹配到 時返回tr,沒匹配到則返回false ①m.matches() matches()對整個字符串進行匹配,只有整個字符串都匹配了才返回tr ②m.lookingAt() lookingAt()對前面的字符串進行匹配,只有匹配到的字符串在最前面才返 回tr ③m.find() find()對字符串進行匹配,匹配到的字符串可以在任何位置 Matcher類的其他方法 int groupcount() 返回此匹配器模式中的捕獲組數。 String replaceAll(String replacement) 用給定的replacement全部替代匹配的 部分 String repalceFirst(String replacement) 用給定的replacement 替代第一次匹 配的部分 appendReplacement(StringB?r sb,String replacement) 根據模式用 replacement替換相應內容,并將匹配的結果添加到sb當前位置之后 StringB?r appendTail(StringB?r sb) 將輸入序列中匹配之后的末尾字串 添加到sb當前位置之后. group(n) 0代表永遠都是匹配整個表達式的字符串的那部分 n<>0時代表 第n組匹配的部分 ①字符匹配 Pattern p = Pattern.compile(expression); // 正則表達式 Matcher m = p.matcher(str); // 操作的字符串 boolean b = m.matches(); //返回是否匹配的結果 System.out.println(b); Pattern p = Pattern.compile(expression); // 正則表達式 3 JAVA正則表達式實例教程 12/11/2008 Matcher m = p.matcher(str); // 操作的字符串 boolean b = m. lookingAt (); //返回是否匹配的結果 System.out.println(b); Pattern p = Pattern.compile(expression); // 正則表達式 Matcher m = p.matcher(str); // 操作的字符串 boolean b = m..find (); //返回是否匹配的結果 System.out.println(b); ②分割字符串 Pattern pattern = Pattern.compile(expression); //正則表達式 String[] strs = pattern.split(str); //操作字符串 得到返回的字符串數組 ③替換字符串 Pattern p = Pattern.compile(expression); // 正則表達式 Matcher m = p.matcher(text); // 操作的字符串 String s = m.replaceAll(str); //替換后的字符串 ④查找替換指定字符串 Pattern p = Pattern.compile(expression); // 正則表達式 Matcher m = p.matcher(text); // 操作的字符串 StringB?r sb = new StringB?r(); int i = 0; while (m.find()) { m.appendReplacement(sb, str); i++; //字符串出現次數 } m.appendTail(sb);//從截取點將后面的字符串接上 String s = sb.toString(); ⑤查找輸出字符串 Pattern p = Pattern.compile(expression); // 正則表達式 Matcher m = p.matcher(text); // 操作的字符串 while (m.find()) { //m.start() 返回匹配到的子字符串在字符串中的索引位置. //m.end()返回匹配到的子字符串的最后一個字符在字符串中的索引位置. //m.group()返回匹配到的子字符串 } 4 JAVA正則表達式實例教程 12/11/2008 3、下面通過幾個例子來理解一下正則表達式的妙用 3.1 匹配字符串(matches()方法) import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示首字母是a,中間是任意字符,結尾以b結束 //不匹配的結果 p = Pattern.compile("a*b"); m = p.matcher("baaaaab"); b = m.matches(); System.out.println("匹配結果:"+b); //輸出:tr //匹配的結果 p = Pattern.compile("a*b"); m = p.matcher("aaaaab"); b = m.matches(); System.out.println("匹配結果:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 5 JAVA正則表達式實例教程 12/11/2008 3.2 判斷手機號碼(matches()方法) import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示第一位是1,第二位為3或5,結尾為9位數字的一串數字 p = Pattern.compile("^[1][3,5]+\\d{9}"); m = p.matcher("13812345678"); b = m.matches(); System.out.println("手機號碼正確:"+b); //輸出:tr // p = Pattern.compile("[1][3,5]+\\d{9}"); m = p.matcher("03812345678");//錯誤 首位為0 //m = p.matcher("13812345-7a");//錯誤 字符串中有字母或者字符 b = m.matches(); System.out.println("手機號碼錯誤:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 6 JAVA正則表達式實例教程 12/11/2008 3.3 身份證號碼驗證 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示15位或者18位數字的一串數字 p = Pattern.compile("\\d{15}|\\d{18}"); m = p.matcher("120101198506020080"); b = m.matches(); System.out.println("身份證號碼正確:"+b); //輸出:tr // p = Pattern.compile("\\d{15}|\\d{18}"); m = p.matcher("020101198506020080");//錯誤 首位為0 b = m.matches(); System.out.println("身份證號碼錯誤:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 7 JAVA正則表達式實例教程 12/11/2008 3.4 email驗證 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示郵箱號碼 p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+ ([-.]\\w+)*"); m = p.matcher("user@test.com"); b = m.matches(); System.out.println("email號碼正確:"+b); //輸出:tr // p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+ ([-.]\\w+)*"); m = p.matcher("user.test.com");//錯誤 @應為. b = m.matches(); System.out.println("email號碼錯誤:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 8 JAVA正則表達式實例教程 12/11/2008 3.5 IP地址檢查 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示郵箱號碼 p = Pattern.compile("\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}"); m = p.matcher("192.168.1.1"); b = m.matches(); System.out.println("IP正確:"+b); //輸出:tr // p = Pattern.compile("\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}"); m = p.matcher("192.168.1.1234");//錯誤 應該為3位不應該是4位 b = m.matches(); System.out.println("IP錯誤:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 9 JAVA正則表達式實例教程 12/11/2008 3.6 中文名 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest{ static void test(){ Pattern p = null; //正則表達式 Matcher m = null; //操作的字符串 boolean b = false; //正則表達式表示漢字的一串字符串 p = Pattern.compile("^[\一-\龥]+$"); m = p.matcher("貂禪"); b = m.matches(); System.out.println("中文名正確:"+b); //輸出:tr // p = Pattern.compile("^[\一-\龥]+$"); m = p.matcher("nick");//錯誤 只能是中文 b = m.matches(); System.out.println("中文名錯誤:"+b); //輸出:false } p lic static void main(String argus[]){ test(); } } 10 JAVA正則表達式實例教程 12/11/2008 3.7 字符串匹配的返回 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest { static void test() { /** * start()返回匹配到的子字符串在字符串中的索引位置. * end()返回匹配到的子字符串的最后一個字符在字符串中的索引位置. * group()返回匹配到的子字符串 */ Pattern p=Pattern.compile("\\d+"); Matcher m=p.matcher("aaa2223bb11222"); while(m.find()){ System.out.println(m.start());//第一個循環返回3,第二個循環返回 9 System.out.println(m.end());//返回7,第二個循環返回14 System.out.println(m.group());//返回2233,第二個返回11222 } } p lic static void main(String argus[]) { test(); } } 11 JAVA正則表達式實例教程 12/11/2008 3.8 groupCount、group()、group(n)的用法 import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest { static void test() { /* * 本例groupCount將返回三組a11bbb、11、bbb */ Pattern p=Pattern.compile("\\w(\\d\\d)(\\w+)"); Matcher m=p.matcher("aa11bbb"); if(m.find()){ int count = m.groupCount(); //返回匹配組的數目,而不是匹配字符串 的數目 for(int i = 0; i <= count; i++) System.out.println("group " + i + " :" + m.group(i)); } } /* * 返回結果如下 * group 0 :a11bbb * group 1 :11 * group 2 :bbb */ p lic static void main(String argus[]) { test(); } } 12 JAVA正則表達式實例教程 12/11/2008 3.9 分割字符串(split ()方法) import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest { static void test() { Pattern p=Pattern.compile("\\d+"); //將所含數字去掉 String str[] = p.split("aa11bbb33cc55gg"); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } /* * 返回結果如下 * aa * bbb * cc * gg */ p lic static void main(String argus[]) { test(); } } 13 JAVA正則表達式實例教程 12/11/2008 3.10 字符串替換(replaceAll()方法) import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest { static void test() { Pattern p = Pattern.compile("\\d+"); //將所含數字全部替換為XX Matcher m = p.matcher("aa11bbb33cc55gg"); String str = m.replaceAll("XX"); System.out.println(str); } /* * 返回結果如下 * aaXXbbbXXccXXgg */ p lic static void main(String argus[]) { test(); } } 14 JAVA正則表達式實例教程 12/11/2008 3.11 字符串替換2(appendReplacement()方法及appendTail()方法) import java.util.regex.Matcher; import java.util.regex.Pattern; p lic class RegTest { static void test() { Pattern p = Pattern.compile("55"); Matcher m = p.matcher("aa11bbb33cc55gg55yy"); StringB?r sb = new StringB?r(); while (m.find()) { m.appendReplacement(sb, "@@");//用@@替換所有的55 } System.out.println(sb.toString());//打印aa11bbb33cc@@gg@@ m.appendTail(sb);//將最后一次替換后的字符串加上 System.out.println(sb.toString());//打印aa11bbb33cc@@gg@@yy } /* * 返回結果如下 aa11bbb33cc@@gg@@、aa11bbb33cc@@gg@@yy */ p lic static void main(String argus[]) { test(); } } 15 JAVA正則表達式實例教程 12/11/2008 4、常用的正則表達式 //email 正確的書寫格式為 username@domain static String _email = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+ ([-.]\\w+)*"; //電話 正確格式 012-87654321、0123-87654321、0123-7654321 static String _tel = "\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8)"; //手機號碼 13187654321 13587654321 static String _phone = "^[1][3,5]+\\d{9}"; //漢字 中國 static String _chinse = "^[\一-\龥]+$"; //IP 192.168.1.1 static String _ip = "\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}"; //QQ 456789 static String _qq = "[1-9][0-9]{4,13}"; //郵編 210000 static String _mail = "[1-9]\\d{5}(?!\\d)"; //身份證號碼 15或者18位 static String _id = "\\d{15}|\\d{18}"; 5、結尾 轉自: http://plplum.blog.163.com/blog/static/310324002010111545858775/

總結

以上是生活随笔為你收集整理的JAVA正则表达式实例教程(转帖收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。