『黑马程序员』第九话<正则表达式>

来源:互联网 发布:维生素 抑郁症 知乎 编辑:程序博客网 时间:2024/05/17 13:42


【1】、正则表达式(特点)

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

       作用:用于专门操作字符串。

       特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写。

       好处:可以简化对字符串的复杂操作。

       弊端:符号定义越多,正则越长,阅读性越差

【2】、正则表达式(匹配、切割、替换)

具体操作功能:

1.匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。

2.切割:String split();

3.替换: String replaceAll();

【3】、正则表达式(获取)

获取:将字符串中符合规则的字串取出

操作步骤:

1.将正则表达式封装成对象;

2.让正则对象和要操作的字符串相关联;

3.关联后,获取正则匹配引擎;

4.通过引擎对符合规则的字串进行操作,比如取出。

public final class Pattern extends Objectimplements Serializable  正则表达式的编译表示形式

【4】、正则表达式(练习)

需求:将下列字符串转成:我要学编程

       到底用四种功能中的哪一个呢?或者哪几个呢?

       思路方式:

       1.如果只想知道该字符是否对是错,使用匹配;

       2.想要将已有的字符串变成另一个字符串,替换。

       3.想要按照自定义的方式将字符串编程多个字符串,切割。获取规则以外的字串;

       4.想要拿到符合需求的字符串字串,获取,获取符合规则的字串

  public static void ipSort()
       {
              String ip = "192.168.1.254102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
 
              ip =ip.replaceAll("(
\\d+)","00$1");
              System.out.println(ip);
 
              ip =ip.replaceAll("0*(
\\d{3})","$1");
              System.out.println(ip);
 
              String[] arr = ip.split(" +");
 
              TreeSet<String> ts = newTreeSet<String>();
 
              for(String s :arr)
              {
                     ts.add(s);
              }
              for(String s:ts)
              {
                     System.out.println(s.replaceAll("0*(
\\d+)","$1"));
              }
       }
}

【5】、、网页爬虫(蜘蛛)

import java.io.*;
import java.util.regex.*;
import java.net.*;
class RegexTest2
{
       public static void main(String[] args) throws Exception
       {
              //getMails();
              getMails_1();
       }
 
//通过网页获取邮件地址
       public static void getMails_1()throws Exception
       {
              URL url = newURL("
http://127.0.0.1:8080/myweb/mail.html");
              URLConnection conn =url.openConnection();
 
              BufferedReader bufIn =
                     new BufferedReader(new InputStreamReader(conn.getInputStream()));
 
              String line = null;
              String mailreg ="
\\w+@\\w+(\\.\\w+)+";
              Pattern p = Pattern.compile(mailreg);
 
              while((line=bufIn.readLine())!=null)
              {
                     Matcherm = p.matcher(line);
                     while(m.find())
                     {
                            System.out.println(m.group());
                     }
              }
       }
       //通过本地文件获取邮件地址
       public static void getMails()throws Exception
       {
              BufferedReader bufr =
                     new BufferedReader(new FileReader("mail.txt"));
 
              String line = null;
 
              String mailreg ="
\\w+@\\w+(\\.\\w+)+";
              Pattern p = Pattern.compile(mailreg);
 
              while((line=bufr.readLine())!=null)
              {
                     Matcherm = p.matcher(line);
                     while(m.find())
                     {
                            System.out.println(m.group());
                     }
              }
       }
}


0 0
原创粉丝点击