黑马程序员-网络编程03

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

5正则表达式

  专门处理字符串的一种技术,对字符串的复杂操作变得更为简单。
  StringStringBufferStringBuilder处理字符串  功能不够强大
 
匹配功能 boolean matches(String regex) 
[^abc] 任何字符,除了 a或 c(否定)
Possessive 数量词 
X?+ X,一次或一次也没有 
X*+ X,零次或多次 
X++ X,一次或多次 
X{n}+ X,恰好 次 
X{n,}+ X,至少 次 
X{n,m}+ X,至少 次,但是不超过 次 
预定义字符类
\d  数字:[0-9]
\D  非数字: [^0-9]
\w 单词字符:[a-zA-Z_0-9] 
\W 非单词字符:[^\w] 
 
切割功能 String[] split(String regex)
替换功能 String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
查找功能
    使用的是java.util.regex.Pattern描述正则的类
步骤:
      1.定义正则规则
      2.使用Pattern类的静态方法Pattern.compile(String regex) 编译正则规则
      3.调用Pattern非静态方法 Matcher matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。 matcher匹配器,匹配compile方法中的正则规则
      4.调用Matcher类中的方法find查找boolean find()
        获取找到的结果:Matcher类的方法  String group()
        int start()  int end()匹配的字符串的下标

import java.util.regex.*;
class RegexDemo {
     public static void main(String[] args) {
           method_5();
     }
//D.正则查找的功能
     public static void method_5(){
            String str = "my home zai yuan fang ni mei qu guo";
             //找出3个字母的单词
             //预编译正则
            String reg = "\\b[a-zA-Z]{3}\\b";  //  \b匹配单词边界
            Pattern p = Pattern.compile(reg);
            //正则规则,匹配字符串
            Matcher m = p.matcher(str);
 
            //	System.out.println(m.find());  返回布尔值
            while(m.find()){
            //System.out.println(m.group()); //要先find 后才获取
           System.out.println(str.substring(m.start(), m.end()));
      }
}
 
//验证电子邮件格式
       public static void method_4(){
              String email = "shisong@163.com.cn";
              boolean b = email.matches( "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+");   //com这里变成一个组 出现一次或多次
              System.out.println(b);    //true
       }
 
//叠词的还原
        public static void method_3(){
               String str = "我.要要要.要要.学.学...学.编编...编..编....程.程程...程";
               str = str.replaceAll("\\ .+" , "");        //”.”替换成空格
               System.out.println(str);
               str = str.replaceAll("(.)\\1+" , "$1");
               System.out.println(str);
        }
//C.正则表达式的替换作用
         public static void method_2(){
                String str = "helllowssorrrrrld";
                String s = str.replaceAll("(.)\\1+" , "$1");    //捕获组 匹配后去替换 $,  叠词去重
                System.out.println(s);
          }
 
//B.正则表达式的切割作用
          public static void method_1(){
                 String  str = "abqqqqqcdettfdhhgtnssth";
                 //正则组( )专门处理叠词
                 //(.)表示的是一个组,重用性,对组进行编号 \\1 + 整个组出现一次到多次
                 String[] arr = str.split("(.)\\1+");         //(编号为1组)+出现一次或多次
                 for(String s : arr){
                        System.out.println(s);
                 }
            }
 
//A.正则表达式的匹配作用
          public static void method(){
                    String str = "f3f";
                    //检查 中间的字符是不是×××
                    boolean b = str.matches("f[\\d]f");  //^异或-不是, \d-数字
                    System.out.println(b);
 
                    String str1 = "tooooo";
                    b = str1.matches("to{2,4}");//x+(一次或多次);x{n}(恰好n次);x{n,}至少;x{n,m}至少n不超过m
                    System.out.println(b);
 
                    String num = "12800138000";
                    b = num.matches("1[3568][0-9]{9}");//验证手机号码
                    System.out.println(b);
           }
}


练习 抓取网页的邮箱地址

/*
  抓取网页的邮件地址 
*/
import java.net.*;
import java.util.regex.*;
import java.io.*;
class CatchEmail {
         public static void main(String[] args) throws Exception{
                   String reg = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
                   URL url = new URL("http://www.taobao.com");
                   //开启连接
                   // openConnection()返回URLConnection 对象,表示到 URL 所引用的远程对象的连接。
                    URLConnection conn = url.openConnection();
 
                    BufferedReader bfr = new 
                                  BufferedReader(new InputStreamReader(conn.getInputStream()));//返回从此打开的链接读取的输入流
 
                    String line = null;
                    while((line = bfr.readLine())!=null){
                                   Pattern p = Pattern.compile(reg);
                                   Matcher m = p.matcher(line);
                                   while(m.find()){
                                          System.out.println(m.group());
                                    }
                      }
           } 
}
----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------


 

基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值