




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA正则表达式实例教程12/ 11/2008JAVA正则表达式实例教程NickShan ghai ChinaKan dk5222008-12-12So many ope n source projects. Why not Open your Docume nts?1JAVA正则表达式实例教程12/ 11/20081、正则表达式的知识要点1、正则表达式是什么?正则表达式是一种可以用于模式匹配和替换的强有力的工具。2、正则表达式的优点? 更少的代码,更高的效率。3、正则表达式如何使用?在下面的教程中我们将学习到正则表达式的用法。4、正则表达式的缺点?需要花一定的时间学习,这个时间由个人决定,
2、一天或者更久一些。2、正则表达式的各种符号及其含义常用的符号表示任意个子付s空格字符(空格键,tab,换行,换页,回车)S非空格字符(as)d一个数字,(相当于0-9)D一个非数字的字符,(相当于A0-9)w一个单词字符(word character)(相当于a-zA-Z 0-9)W一个非单词的字符,AWA一行的开始$一行的结尾b一个单词的边界B一个非单词的边界G前一个匹配的结束匹配方括号内的一个字符例如:abc表示字符a, b, c中的任意一个(与a|b|c相同)a-zA-Z表示从a到z或A到Z当中的任意一个字符表示次数的符号*重复零次或更多次例如:a*匹配零个或者多个a+重复一次或更多次例
3、如:a+匹配一个或者多个a?重复零次或一次例如:a?匹配零个或一个an重复n次例如:a4匹配4个an,重复n次或更多次例如:a4,匹配至少4个an,m重复n到m次例如:a4,10匹配410个a3、正则表达式实例java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现:1、首先弓I入 java包: java.util.regex2、使用方法如下:共分三步: 构造一个模式.Pattern p=Ppile(a-z*); 建造一个匹配器Matcher m = p.matcher(str); 进行判断,得到结果boolea n b = m.matches();Ma
4、tcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false m.matches()matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true m.lookingAt()look in gAt()对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回 true m.find()fin d()对字符串进行匹配,匹配到的字符串可以在任何位置Matcher类的其他方法in t groupcou nt()返回此匹配器模式中的捕获组数。String replaceAll(String replacement) 用给定的 repl
5、acement 全部替代匹配的 部分String repalceFirst(String replacement) 用给定的 replacement 替代第一次匹 配的部分appendReplacement(StringBuffer sb,String replacement)根据 模式用replacement替换相应内容,并将匹配的结果添加到sb当前位置之后Stri ngBuffer appe ndTail(Stri ngBuffer sb) 将输入序列中匹配之后的末尾字串 添加到sb当前位置之后.group(n) 0代表永远都是匹配整个表达式的字符串的那部分n0时代表第n组匹配的部分 字符
6、匹配Pattern p = Ppile(expression); / 正则表达式 Matcher m = p.matcher(str); / 操作的字符串 boolean b = m.matches(); II返回是否匹配的结果 System.out.pri ntl n( b);Pattern p = Ppile(expression); II 正则表达式Matcher m = p.matcher(str); / 操作的字符串boolean b = m. lookingAt (); /返回是否匹配的结果System.out.pri ntl n( b);Pattern p = Ppile(exp
7、ression); / 正则表达式Matcher m = p.matcher(str); / 操作的字符串boolean b = m.find (); /返回是否匹配的结果System.out.pri ntl n( b); 分割字符串Pattern pattern = Ppile(expression); / 正则表达式String strs = pattern.split(str); /操作字符串 得到返回的字符串数组 替换字符串Pattern p = Ppile(expression); / 正则表达式Matcher m = p.matcher(text); / 操作的字符串String
8、s = m.replaceAll(str); / 替换后的字符串 查找替换指定字符串Pattern p = Ppile(expression); / 正则表达式Matcher m = p.matcher(text); / 操作的字符串Stri ngBuffer sb = new Stri ngBuffer();int i = 0;while (m.fin d() m.appe ndReplaceme nt(sb, str);i+; /字符串出现次数m.appe ndTail(sb);/从截取点将后面的字符串接上Stri ng s = sb.toStri ng(); 查找输出字符串Pattern
9、 p = Ppile(expression); / 正则表达式Matcher m = p.matcher(text); / 操作的字符串while (m.fin d() /m.start()返回匹配到的子字符串在字符串中的索引位置/m.e nd()返回匹配到的子字符串的最后一个字符在字符串中的索引位置/m.group()返回匹配到的子字符串3、下面通过几个例子来理解一下正则表达式的妙用3.1匹配字符串(matches。 方法)import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegTestst
10、atic void test()Pattern p = null ; / 正则表达式Matcher m =null ; /操作的字符串boolea n b = false ;/正则表达式表示首字母是a,中间是任意字符,结尾以b结束/不匹配的结果p = Ppile (a*b);m = p.matcher(baaaaab);b = m.matches();System. out .println(匹配结果:+b);/输出:true/匹配的结果p = Ppile (a*b);m = p.matcher( aaaaab);b = m.matches();匹配结果
11、:+b);/输出:falseSystem. out .println(public static void main( Stri ng argus) test ();5JAVA正则表达式实例教程12/ 11/20083.2判断手机号码(matches。方法)import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegTeststatic void test()Pattern p = null ; / 正则表达式Matcher m =null ; /操作的字符串boolea nb = false ;/
12、正则表达式表示第一位是1,第二位为3或5,结尾为9位数字的一串数字p = Pattern. m = p.matcher( b = m.matches();compile (A13,5+d9;手机号码正确:+b);/);输出:trueSystem.out .println(/p =:Ppile (”13,5+d9);m =p.matcher(03812345678); / 错误首位为0m = p.matcher(13812345-7a);错误 字符串中有字母或者字符b = m.matches();System. out .println(” 手机号码
13、错误:+b);/ 输出:falsepublic static void main( Stri ng argus)test ();6JAVA正则表达式实例教程12/ 11/20083.3身份证号码验证import_java.util.regex.Matcher; import java.util.regex.Pattern;public class RegTest static void test()Pattern p =n ull;/正则表达式Matcher m =null ;/操作的字符串boolea n b =false/正则表达式表示15位或者18位数字的一串数字p = Pattern.
14、compile (d15|d18);m = p.matcher(;b = m.matches();System. out .println(” 身份证号码正确:+b);/ 输出:true/p = Ppile (d15|d18);m = p.matcher( 020101198506020080); / 错误 首位为 0b = m.matches();System. out .println(” 身份证号码错误:+b);/ 输出:falsepublic static void main( Stri ng argus)test ();7J
15、AVA正则表达式实例教程12/ 11/20083.4 email 验证import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegTeststatic void test()Pattern p = null ; / 正则表达式Matcher m =null ; /操作的字符串boolea n b = false ;/正则表达式表示邮箱号码p = Ppile (w+(-+.w+)*w+(-.w+)*.w+(-.w+)*);m = p.matcher( user );b = m.ma
16、tches();System. out .println(email 号码正确:+b);/ 输出:true/p =Pattern. compile (w+(-+.w+)*w+(-.w+)*.w+(-.w+)*);m = p.matcher( ); / 错误 为.b = m.matches();System. out .println(email 号码错误:+b);/ 输出:falsepublic static void main( Stri ng argus)test ();8JAVA正则表达式实例教程12/ 11/20083.5 IP地址检查import java.util.regex.Ma
17、tcher;import java.util.regex.Pattern;public class RegTeststatic void test()Pattern p = null ; / 正则表达式Matcher m =null ; /操作的字符串boolea n b = false ;/正则表达式表示邮箱号码p =Pattern. compile (d1,3+.d1,3+.d1,3+.d1,3);m = p.matcher( );b = m.matches();System. out .println( IP 正确:+b);/ 输出:true/p =Pattern.
18、 compile (d1,3+.d1,3+.d1,3+.d1,3);m = p.matcher( 234);/ 错误 应该为 3位不应该是 4位b = m.matches();System. out .println(IP 错误:+b);/ 输出:falsepublic static void main( Stri ng argus)test ();9JAVA正则表达式实例教程12/ 11/20083.6中文名import_java.util.regex.Matcher;importjava.util.regex.Pattern;public class RegTests
19、tatic void test()Pattern p = null ; / 正则表达式Matcher m =null ; /操作的字符串boolea n b = false ;/正则表达式表示汉字的一串字符串p = Ppile (Au4e00-u9fa5+$);m = p.matcher( 貂禅”);b = m.matches();System. out .println(” 中文名正确:+b);/ 输出:true/p = Ppile (Au4e00-u9fa5+$);m = p.matcher(nick ); / 错误 只能是中文b = m.match
20、es();System. out .println(” 中文名错误:+b);/ 输出:falsepublic static void main( Stri ng argus)test ();10JAVA正则表达式实例教程12/ 11/2008import importpublicclass RegTest static/*voidtest() start()en d()group()返回匹配到的子字符串返回匹配到的子字符串在字符串中的索引位置 .返回匹配到的子字符串的最后一个字符在字符串中的索引位置*/Pattern p=Ppile (d+);Matcher m=p.mat
21、cher( aaa2223bb11222);while (m.find()System.out .println(m.start();/第一个循环返回3,第二个循环返回publictestSystem.System.out .println(m.end(); out .println(m.group();/返回7,第二个循环返回14/返回2233,第二个返回11222static();void main( Stri ng argus) 3.7字符串匹配的返回java.util.regex.Matcher; java.util.regex.Patter n;11JAVA正则表达式实例教程12/
22、11/20083.8 groupCount、group()、group(n)的用法import java.util.regex.Matcher;importjava.util.regex.Pattern;public class RegTest static void test() /* 本例groupCount 将返回三组 allbbb、11、bbb*/Pattern p=Ppile (w(dd)(w+);Matcher m=p.matcher( aa11bbb);if (m.find()int count = m.groupCount();/返回匹配组的数目,而不是匹配
23、字符串的数目for (int i = 0; i = count; i+)System. out .println(group + i + :+ m.group(i);/*返回结果如下* group 0 :a11bbb* group 1 :11* group 2 :bbb*/public static void main( Stri ng argus) test ();12JAVA正则表达式实例教程12/ 11/20083.9分割字符串(split ()方法)import java.util.regex.Matcher; import Java.util.regex.Pattern;public
24、 class RegTest static void test() Pattern p=Ppile (d+);/ 将所含数字去掉Stri ng str = p.split(aa11bbb33cc55gg );for ( int i = 0; i str.length ; i+) System. out .println(stri);/*返回结果如下* bbbccggvoid main( Stri ng argus) */public static test ();13JAVA正则表达式实例教程12/ 11/20083.10字符串替换(replaceAIIO 方法)impor
25、t java.util.regex.Matcher; import Java.utIl.regex.Pattern;compile (d+); II将所含数字全部替换为XXaa11bbb33cc55gg );XX);public class RegTest static void test() Pattern p = Pattern. Matcher m = p.matcher( Stri ng str = m.replaceAll( System. out .println(str);I*返回结果如下* aaXXbbbXXccXXgg*Ipublic static void main( St
26、ri ng argus) test ();14JAVA正则表达式实例教程12/ 11/20083.11 字符串替换 2(appendReplacement() 方法及 即pendTail()方法)import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegTest static void test() Pattern p = Ppile (55);Matcher m = p.matcher(aa11bbb33cc55gg55yy );Strin gBuffer sb =new Stri ngBuffer();while (m.fi nd() m.appendReplacement(sb,); 用(替换所有的 55System. ou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外贸英语写作课件百度云
- 探秘电流世界
- 硕士追求指南
- 四川省成都市第第十八中学2025届初三下学业水平考试生物试题试卷含解析
- 天津美术学院《现代推销学实验》2023-2024学年第一学期期末试卷
- 山西省左玉县市级名校2024-2025学年初三下学期期末教学质量检查数学试题含解析
- 南宁二中、柳州高中2024-2025学年高三下学期第9周周考物理试题含解析
- 山西传媒学院《现代生物制药工程原理》2023-2024学年第二学期期末试卷
- 上海外国语大学《文化与翻译(1)》2023-2024学年第一学期期末试卷
- 山东省乐陵市第一中学重点名校2025年初三下学期物理试题周练二不含附加题含解析
- 2024年武汉农村商业银行股份有限公司招聘考试真题
- 河北省唐山市、廊坊市2025届高三第二次模拟演练语文试卷(含答案)
- 2025年上半年浙江省中波发射管理中心招聘14人重点基础提升(共500题)附带答案详解
- 园艺设施考试题及答案
- 孕前保健试题及答案
- 工业自动化设备装配与调试考核试卷
- 2023四年级数学下册 3 运算律练习课(运算定律)配套教学实录 新人教版
- 2025年低空经济科普知识竞答考试题库300题(含答案)
- 柴油发电机房安全管理制度及操作规程
- 《休闲农业》课件 项目二 休闲农业分类及模式分析
- 停车场管理巡查的流程与注意事项
评论
0/150
提交评论