正则表达式
一,简述 作用:用于专门操作字符串。 特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读性越差。 二、功能 1,匹配:Stringmatches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。 2,切割:Stringsplit(); 1public static void sliptt(String s,String regex) 2{ 3 String[] arr=s.split(regex); 4 5 for(String ss:arr) 6 sop(ss); 7 8} 3,替换:StringreplaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。 9//需求:将口痴语句变正常 10 //使用替换功能 11 public static void change() 12 { 13 String s="我我我...我我.我...要要要....要...学java!"; 14 String ss=s.replaceAll(".+",""); 15 String sss=ss.replaceAll("(.)1+","$1"); 16 sop(sss); 17<pre name="code" class="java">public static void replace(String s,String reg,String newS) 18{ 19 String ss=s.replaceAll(reg,newS); 20 sop(ss); 21} 22public static void sop(Object o) 23{ 24 System.out.println(o); 25} 4,获取:取出符合规则的字串。 (1)将正则表达式封装成对象;p=Pattern.compile(reg) (2)让正则对象和要操作的字符串想关联;Matcherm=p.matcher(str) (3)获取正则匹配matcher; (4)while(m.find()) m.group();
27//获取 28 public static void get() 29 { 30 String s="sas dads dsdsd ffg rwe fgd ff jkj jkhj"; 31 //1,封装正则对象 32 String reg="bw{4}b";//正则中都使用 33 Pattern p=Pattern.compile(reg); 34 //2,获得匹配器 35 Matcher m=p.matcher(s); 36 //3,细节操作 37 while(m.find()) 38 { 39 sop(m.group()); 40 } 41 } 三,四种功能如何选用 思路: 1,如果只想知道字符对错,使用匹配; 2,将已有字符串变成另外一个,替换; 3,想要按照自定的方式将字符串变成多个,切割;获取规则以外的; 4,想要拿到符合需求的字符串字串,获取;获取符合规则的; 四、案例 1、邮件匹配 42//邮件匹配 43 public static void mailTo() 44 { 45 String s="zhuyutao@126.com.cn.cn.cn"; 46 boolean b=s.matches("w+@w+(.w+){1,3}"); 47 sop(b); } 2、网页爬虫 :分析页面,获取自己想要的内容。 49public static void spiders()throws Exception 50 { 51 String urlStr="http://blog.sina.com.cn/s/blog_61bdcb7e0101692h.html"; 52 URL url=new URL(urlStr); 53 URLConnection conn=url.openConnection(); 54 BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 55 String line=null; 56 while((line=br.readLine())!=null) 57 { 58 //sop(line); 59 //获取pattern matcher 60 String mailReg="w+@w+(.w+)+"; 61 Pattern p=Pattern.compile(mailReg); 62 Matcher m=p.matcher(line); 63 while(m.find()) 64 sop(m.group()); 65 } 66 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |