黑马程序员_day29_正则表达式

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

正则表达式:就是用操作字符串数据的规则表达式。

规则:就是用一些符号组成,每个符号都代表着特有的含义。

    其实这些符号想当于对应着底层一段代码。对外提供符号是简化了操作。

    

  弊端:必须要先学习这些符号。符号多了,阅读性会较差。

正则表达式对字符串的常见操作:

1,匹配。

使用的是String类中的matches方法。

2,切割。

使用的是String类中的split方法。 

3,替换。

使用的是String类中的replaceAll方法。

4,获取。

将匹配的规则的内容获取出来。

使用到正则表达式对象。Pattern

使用步骤:

1,先将正则表达式编译成Pattern对象。

2,通过Pattern对象的matcher方法获取Matcher匹配器对象。

3,通过匹配器对象的方法,将正则规则作用到字符串上以便于操作。

练习:

 需求:对QQ号进行校验。

要求:5~15 位,不能以0开头,必须是数字。

public static void main(String[] args) {

String QQ = "0123478";

String regex = "[1-9][0-9]{4,14}";//正则表达式

boolean b = QQ.matches(regex);

System.out.println(QQ+"::"+b);

}

练习:

获取字符串中的三个字母组成的单词

public static void getDemo(){

String str = "da jia zhu yi le ,yao pai wei dian ying la !";

String reg = "\\b[a-z]{3}\\b";//三个字母组成的单词都取出来。 

\\b------\\b是边界,三个单词为一个边界

//正则规则被编译成Pattern对象。 

Pattern p = Pattern.compile(reg);

//通过正则对象的方法matcher和字符串想关联获取匹配器对象。

Matcher m = p.matcher(str);

//使用匹配器的方法对字符串进行操作。

while(m.find()){

System.out.println(m.start()+"---"+m.group()+"----"+m.end());

}该单词在字符串中是从几号位到几号位 end()得到的末尾指针是不包括的 包头不包尾。

}

练习:

替换电话号码中段的四位号码。

public static void replaceAllDemo(){

// String str = "werqqtyuzzzio";

// str = str.replaceAll("(.)\\1+","$1");//后一个参数可以通过$数字 引用前一个参数中的组。

String str = "15812345678";

str = str.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");

System.out.println(str);

}

练习:

切割

public static  void splitDemo(){

// String str = "23    19 -1 9 56";

// String[] arr = str.split(" +");

// String str = "zhangsan.lisi.wangwu";

// String[] arr = str.split("\\.");

String str  = "werqqtyuzzzio";

String[] arr = str.split("(.)\\1+");qqzzz为分割符。重复多次字符的符合正则表达式。

for(String s : arr){

System.out.println(s);

}

}

练习:

 我我我...我我...我要...要要..要要......学学..学学...编编编..编程...程程...

 要求:将该字符串变成      我要学编程。

public static void test_1(){

 思路:

 1,先去掉所有 替换。

 2,叠词变成一个。替换。

String str = "我我我...我我...我要...要要..要要......学学..学学...编编编..编程...程程...";

str = str.replaceAll("\\.+","");

System.out.println(str);

str = str.replaceAll("(.)\\1+", "$1");

System.out.println(str);

}

}

练习:

邮箱校验。

String mail = "abc23@sina.com.cn.di";

String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,}){1,3}";

练习:

网络爬虫。spider

 是一段小程序,专门负责获取指定规则数据。

public static void getMailsByNet() throws IOException{

URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");

BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));

String line = null;

String mail_reg = "\\w+@\\w+(\\.\\w+)+";

Pattern p = Pattern.compile(mail_reg);

while((line=bufr.readLine())!=null){

Matcher m = p.matcher(line);

while(m.find()){

System.out.println(m.group());

}

}

}

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值