正则表达式又称正规表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在很多文本编辑器中,正则表达式检索、替换那些符合某个模式的文本。其英文的名称是Regular Expression,代码中常可以简写为regex,下面介绍一下这几个小小的贝壳:
【1】Pattern和Matcher 找单词
【2】用mathces是否合法
【3】用split来分割
【4】repleaceAll 来修复句子
【5】还是用Pattern的Compile来查找Email
查找单词
找到一个字符串中两个字母的单词[a-z]表示范围,{2}表示两个
<span style="color: rgb(51,0);"><span style="font-size: 14px;"><span style="font-family:SimSun;">package Regex; import java.util.regex.*; // 找到一句话中只有两个字母的单词 public class PatternTest { public static void main(String args[]){ String words = "lsdf,fls,df,ds,dad,dd"; String wordspattern = "\\b[a-z]{2}\\b";// 其中\b表示的是单词边界 Pattern pattern = Pattern.compile(wordspattern); Matcher matcher = pattern.matcher(words); while(matcher.find()){ System.out.println(matcher.group()); } } }</span><span style="font-family:Microsoft YaHei;"> </span></span></span>
判断号码
判断QQ号的和手机号的输入法则
<span style="color: rgb(51,0);"><span style="font-size: 14px;"><span style="font-family:SimSun;">package Regex; import java.util.regex.*; // 判断QQ号和手机号是否合法 public class MatchTest { public static void main(String args[]){ System.out.println("判断输入的QQ号是否合法——-------"); String QQ = "131233123"; String QQReg = "[1-9][0-9]{4,14}";//第一位是1-9,第二位是0-9,包括第二位在内,0-9循环4-14次 System.out.println(QQ.matches(QQReg)); System.out.println("判断输入的手机号号是否合法——-------"); String Tel = "15611025780"; String TelReg = "1[38][0-9]{9}";// 第一位是1,第二位是3或者8,包括第二位在内0-9循环9次 System.out.println(Tel.matches(TelReg)); } }</span><span style="font-family:Microsoft YaHei;"> </span></span></span>
拆分字符串
在字符串有重复的地方拆分字符串
package Regex; public class SplitTest { public static void main(String args[]){ // (.)表示把任意一个字符封装成数组,就是说以一个字符重复出现的地方为分割线 String str = "sdffff,ghhghjjio"; String []strArray = str.split("(.)\\1+"); for(String s : strArray){ System.out.println(s); } } }
去掉重复
去掉.号和重复的汉
package Regex; public class ReplaseAll { public static void main(String args[]){ String str = "我我我我我......很很很....快..快乐乐乐乐..."; str = str.replaceAll("\\.+","");//将重复的.号用""替换,也就是将.号去掉 str = str.replaceAll("(.)\\1+","$1");//将重复的汉字使用重复数组的第一个字符替换 System.out.println(str); } }找文件中Email
找到文件中的Email,w+代表的是大小写数字,+号表示一个及以上,\\.就表示.号了,( )表示的是封装成整体字,使字符串恢复正常
package Regex; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.io.*; public class FindEmail{ public static void main(String args[]) throws Exception{ BufferedReader br = new BufferedReader(new FileReader("H:\\mail.txt")); String emailReg = "\\w+@\\w+(\\.\\w+)+";// 其中\\w+是代表大小写字符或者数字一个以上 // \\.就是代表的.号,()内的东西表示作为一个整体,后边的+号代表这个整体是一个以上的 String line = null; Pattern pa = Pattern.compile(emailReg); while((line = br.readLine()) != null){ Matcher ma = pa.matcher(line); while(ma.find()){ System.out.println(ma.group()); } } } }