黑马程序员--正则表达式(重点)

来源:互联网 发布:美国的华莱士 知乎 编辑:程序博客网 时间:2024/06/07 03:52

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

正则表达式:就是符合一定规则的表达式。


在包util.regex中。
下面有两个类:一个是模式:Pattern ,一个是匹配器:Matcher


作用:专门用来操作字符串的。
特点:用一些符号来表示规则。定义好这些规则就可以很容易的操作字符串。
注意:其实在String类中的方法,很多都是封装正则表达式。


对字符串简单的操作还是用String类中的方法好。
但是对字符串复杂的操作就要用到正则了。


具体功能:
1.匹配


2.切割


3.替换


4.获取
将字符串中符合规则的元素取出。
1,打正则表达式封装成对象。
2,让正则表达式和要操作的字符串相关联。
3,获取匹配器。
4,通过匹配器对字符串进行操作。

import java.util.regex.*;class RegexDemo {public static void main(String[] args) {//System.out.println("Hello World!");method_1();method_2();method_3();method_4();}public static void method_1()//匹配{String s = "13794567745";String regex = "1[358]\\d+{11}";//意思:第一位是1,第二位是3或5或8,第三位是数字,有1位或多位数字,刚好11位。sop(s.matches(regex));s = "12345356";regex = "[1-9]\\d{6,11}";//意思:第一位是1-9之间,第二位是数字。最少有6位,最多有11位。sop(s.matches(regex));}public static void method_2()//切割{String s = "abc  asd  asf  efas";String regex = " +";//意思: 一个或多个空格。String[] str = s.split(regex);s = "c:\\java\\0917";regex = "\\\\";//意思:用\\来切。str = s.split(regex);s = "abc.bde.ger";regex = "\\.";//意思:用.来切。str = s.split(regex);s = "asssfffferrggg";regex = "(.)\\1+";//意思:(.)第一位是任何字符。()表示一个组。第二位是第一组中的值。也就是.,有一位.或多位。str = s.split(regex);for (String ss : str ){sop(ss);}}public static void method_3()//替换{String s = "var13789003jsdf891239283";String regex = "\\d{5,}";s = s.replaceAll(regex,"*");//意思:5位或以上数字替换成*。s = "dddffffeerrrggll";regex = "(.)\\1+";s = s.replaceAll(regex,"$1");//意思:1位以上的任何重复字符,替换成1组中的值。去除重复元素。sop(s);}public static void method_4()//获取{String s = "ming tian jiu yao fang jia le ,da jia . ";String regex = "\\b[a-zA-Z]{4}\\b";//第一步:把正则表达式封装成对象。Pattern p = Pattern.compile(regex);//第二步:获取指定字符串的匹配器。Matcher m = p.matcher(s);//第三步:操作字符串while (m.find()){sop(m.group());}}public static void sop(Object obj){System.out.println(obj);}}

正则表达式的练习:
第一个:
对邮箱地址进行校验。


第二个:
我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程
转成:我要学编程。


第三个:
网络爬虫。
从一个网页页面中爬到邮箱地址。

import java.util.regex.*;import java.net.*;import java.io.*;class RegexDemo2 {public static void main(String[] args) {method_1();method_2();method_3();}public static void method_1()//对邮箱地址进行校验{String s = "wangyang@126.com.cn";String regex = "[a-zA-Z]\\w+{6,12}@\\w+{1,8}(\\.[a-zA_Z]+)+";//意思:第一位是a-z或A-Z第二位以后都是字符。至少要六位。最多12位。下一位是@//下一位以后都是字符。到少一位,最多八位。下一组是.加上很多a-z。有很多组。sop(s.matches(regex));}public static void method_2(){String s = "我我...我我...我要..要要...要要......学学...编编编...编程..程.程程...程...程";String regex = "\\.+";//分两步走。第一步:用空替换掉...s = s.replaceAll(regex,"");sop(s);regex = "(.)\\1+";//第二步:替换掉重复字符。s = s.replaceAll(regex,"$1");sop(s);}public static void method_3()throws Exception{//爬这一断代码"space-uid-数字.html"URL url = new URL("http://bbs.itheima.com/forum-165-1.html");}public static void sop(Object obj){System.out.println(obj);}}


----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击