您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > JAVA正则表达式实例教程
JAVA正则表达式实例常用的正则表达式//email正确的书写格式为username@xx.comstaticString_email=\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*;//012-876543210123-8765432101237654321电话正确格式-staticString_tel=\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8);//手机号码15910562486staticString_phone=^[1][3,5]+\\d{9};//汉字中国staticString_chinse=^[\u4e00-\u9fa5]+$;//IP192.168.0.1staticString_ip=\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3};//QQ456789staticString_qq=[1-9][0-9]{4,13};//邮编210000staticString_mail=[1-9]\\d{5}(?!\\d);//身份证号码15或者18位staticString_id=\\d{15}|\\d{18};JAVA正则表达式实例教程1、正则表达式的知识要点1、正则表达式是什么?正则表达式是一种可以用于模式匹配和替换的强有力的工具。2、正则表达式的优点?更少的代码,更高的效率。3、正则表达式如何使用?在下面的教程中我们将学习到正则表达式的用法。4、正则表达式的缺点?需要花一定的时间学习,这个时间由个人决定,一天或者更久一些。2、正则表达式的各种符号及其含义常用的符号.表示任意一个字符\s空格字符(空格键,tab,换行,换页,回车)\S非空格字符([^\s])\d一个数字,(相当于[0-9])\D一个非数字的字符,(相当于[^0-9])\w一个单词字符(wordcharacter)(相当于[a-zA-Z_0-9])\W一个非单词的字符,[^\w]^一行的开始$一行的结尾\b一个单词的边界\B一个非单词的边界\G前一个匹配的结束[]匹配方括号内的一个字符例如:[abc]表示字符a,b,c中的任意一个(与a|b|c相同)[a-zA-Z]azAZ表示从到或到当中的任意一个字符表示次数的符号*重复零次或更多次例如: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个a3、正则表达式实例java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现:1、首先引入java包:java.util.regex2、使用方法如下:共分三步:①构造一个模式.Patternp=Pattern.compile([a-z]*);②建造一个匹配器Matcherm=p.matcher(str);③进行判断,得到结果booleanb=m.matches();Matcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false①m.matches()matches(),true对整个字符串进行匹配只有整个字符串都匹配了才返回②m.lookingAt()lookingAt(),对前面的字符串进行匹配只有匹配到的字符串在最前面才返回true③m.find()find(),对字符串进行匹配匹配到的字符串可以在任何位置Matcher类的其他方法intgroupcount()返回此匹配器模式中的捕获组数。StringreplaceAll(Stringreplacement)用给定的replacement全部替代匹配的部分StringrepalceFirst(Stringreplacement)用给定的replacement替代第一次匹配的部分appendReplacement(StringBuffersb,Stringreplacement)根据模式用replacement,sb替换相应内容并将匹配的结果添加到当前位置之后StringBufferappendTail(StringBuffersb)将输入序列中匹配之后的末尾字串添加到sb当前位置之后.group(n)0代表永远都是匹配整个表达式的字符串的那部分n0时代表n第组匹配的部分①字符匹配Patternp=Pattern.compile(expression);//正则表达式Matcherm=p.matcher(str);//操作的字符串booleanb=m.matches();//返回是否匹配的结果System.out.println(b);Patternp=Pattern.compile(expression);//正则表达式3Matcherm=p.matcher(str);//操作的字符串booleanb=m.lookingAt();//返回是否匹配的结果System.out.println(b);Patternp=Pattern.compile(expression);//正则表达式Matcherm=p.matcher(str);//操作的字符串booleanb=m..find();//返回是否匹配的结果System.out.println(b);②分割字符串Patternpattern=Pattern.compile(expression);//正则表达式String[]strs=pattern.split(str);//操作字符串得到返回的字符串数组③替换字符串Patternp=Pattern.compile(expression);//正则表达式Matcherm=p.matcher(text);//操作的字符串Strings=m.replaceAll(str);//替换后的字符串④查找替换指定字符串Patternp=Pattern.compile(expression);//正则表达式Matcherm=p.matcher(text);//操作的字符串StringBuffersb=newStringBuffer();inti=0;while(m.find()){m.appendReplacement(sb,str);i++;//字符串出现次数}m.appendTail(sb);//从截取点将后面的字符串接上Strings=sb.toString();⑤查找输出字符串Patternp=Pattern.compile(expression);//正则表达式Matcherm=p.matcher(text);//操作的字符串while(m.find()){//m.start()返回匹配到的子字符串在字符串中的索引位置.//m.end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.//m.group()返回匹配到的子字符串}43、下面通过几个例子来理解一下正则表达式的妙用3.1匹配字符串matches()方法)importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{staticvoidtest(){Patternp=null;//正则表达式Matcherm=null;//操作的字符串booleanb=false;//ab正则表达式表示首字母是,中间是任意字符,结尾以结束//不匹配的结果p=Pattern.compile(a*b);m=p.matcher(baaaaab);b=m.matches();System.out.println(匹配结果:+b);//输出:true//匹配的结果p=Pattern.compile(a*b);m=p.matcher(aaaaab);b=m.matches();System.out.println(匹配结果:+b);//输出:false}publicstaticvoidmain(Stringargus[]){test();}}53.2判断手机号码matches()方法)importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{staticvoidtest(){Patternp=null;//正则表达式Matcherm=null;//操作的字符串booleanb=false;//1359正则表达式表示第一位是,第二位为或,结尾为位数字的一串数字p=Pattern.compile(^[1][3,5]+\\d{9});m=p.matcher(13812345678);b=m.matches();System.out.println(手机号码正确:+b);//输出:true//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}publicstaticvoidmain(Stringargus[]){test();}}63.3身份证号码验证importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{staticvoidtest(){Patternp=null;//正则表达式Matcherm=null;//操作的字符串booleanb=false;//正则表达式表示15位或者18位数字的一串数字p=Pattern.compile(\\d{15}|\\d{18});m=p.matcher(120101198506020080);b=m.matches();System.out.println(身份证号码正确:+b);//输出:true//p=Pattern.compile(\\d{15}|\\d{18});m=p.matcher(020101198506020080);//错误首位为0b=m.matches();System.out.println(身份证号码错误:+b);//输出:false}publicstaticvoidmain(Stringargus[]){test();}}73.4email验证importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{staticvoidtest(){Patternp=null;//正则表达式Matcherm=null;//操作的字符串booleanb=false;//正则表达式表示邮箱号码p=Pattern.compile(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*);m=p.matcher(user@test.com);b=m.matches();System.out.println(email号码正确:+b);//输出:true//p=Pattern.compile(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*);m=p.matcher(user.test.com);//@.错误应为b=m.matches();System.out.println(email号码错误:+b);//输出:false}publicstaticvoidmain(Stringargus[]){test();}}83.5IP地址检查im
本文标题:JAVA正则表达式实例教程
链接地址:https://www.777doc.com/doc-2878761 .html