1.昨天复习了Java基础(I/O流)和正则表达式
今天不讲Java中的 I/O
主要用一个实例来爬取网站中的邮箱
代码如下:
1 package com.miao.baba.pacong; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import java.net.URL; 8 import java.net.URLConnection; 9 import java.util.regex.Matcher; 10 import java.util.regex.Pattern; 11 12 public class Reptile { 13 14 public static void main(String[] args) throws IOException { 15 String email = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)+"; 16 Pattern p = Pattern.compile(email); 17 URL url = new URL("http://acm.hrbust.edu.cn"); 18 19 URLConnection conn = url.openConnection(); 20 21 InputStream in = conn.getInputStream(); 22 InputStreamReader isr = new InputStreamReader(in); 23 BufferedReader br = new BufferedReader(isr); 24 25 String line = null; 26 while ((line = br.readLine()) != null) { 27 Matcher m = p.matcher(line); 28 29 while (m.find()) { 30 System.out.println(m.group()); 31 } 32 } 33 br.close(); 34 } 35 }
2.为了让大家好好认识正则表达式下面对代码中的正则表达式进行分析
[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)+
分析:
[a-zA-Z0-9_]+ :
表示匹配a~z和A~Z和0~9和_ 中的多个
@ : 表示匹配 @
[a-zA-Z0-9]+ :
表示匹配a~z和A~Z和0~9中的多个
(\\.[a-zA-Z0-9]+)+
: 表示匹配 .
和a~z和A~Z和0~9中的多个
3.后附一张正则表达式图(经过测试验证,如有错误欢迎指正)