源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java正则表达式简单使用和网页爬虫的制作代码

  • 时间:2020-06-12 04:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java正则表达式简单使用和网页爬虫的制作代码
正则表达式是一种专门用于对字符串的操作的规则。 [b]1.在String类中就有一些方法是对字符串进行匹配,切割。[/b] 判断字符串是否与给出的正则表达式匹配的:boolean matches( String regex); 按照给定的正则表达式对字符串进行切割的:String[]    split(String regex); 将符合正则表达式的字符串替换成我们想要的其他字符串:String  replaceAll(String  regex,String replacement) [b]2.下面介绍一下正则表达式常用的用法[/b] (1)
[u]复制代码[/u] 代码如下:
String regex="[1-9][0-9]{4,15}"; //[1-9]表示这个数字只能在1-9内选择 //[0-9]表示这个数字可以是0-9 //{4,15}表示其前面的这个格式的数字可以重复4-15次
这个正则表达式的意思 是:第一个数字应该是1-9中任意的一个,然后紧接着就必须要出现0-9中的数字中的一种,而且这种数字至少要出现4次,至多出现15次 如: 10175   符合  10不符合,因为[0-9]{4,15},至少要出现4次以上,在这里只出现了一次 (2) [a-zA-Z0-9_]{6}表示恰好要出现6次a-z或A-Z或_  中的字符 +表示至少出现一次 *表示出现0次或多次 ?表示出现一次或0次 (3)根据正则表达式来切割字符串
[u]复制代码[/u] 代码如下:
String str="sjd.ksdj.skdjf"; String regex="\.";
注意:  . 在正则表达式中是表式一个任意的字符,是一个特殊的符号。我们想要用.来切割,就必须将其转换为普通字符 用\即可。 因为 也是特殊符号,所以要两个\来表示。当我们想要使用普通的 时,那么就要用\\来表示才可。 String[] ss=str.split(regex); 返回字符串数组: "sjd"  "ksdj"  "skdjf"  实现 了对原有字符串的切割 (4)根据正则表达式来替换掉我们想要替换的东西 将字符串中所有连续出现5个或以上的数字串替换成#
[u]复制代码[/u] 代码如下:
String str="abcd1334546lasjdfldsf2343424sdj"; String regex="[0-9]{5,}"; String   newstr=str.replaceAll(regex,"#");
(5)获取符合正则表达式规则的字符串
[u]复制代码[/u] 代码如下:
Pattern p=Pattern.compile(String regex); Matcher  m=p.matcher(String str); while(m.find()) { System.out.println(m.group()); }
[b]3.网页爬虫的制作[/b] 我们制作 一个可以将一个网页中的全部的邮箱读取出,并且存放在一个文本文件中。
[u]复制代码[/u] 代码如下:
/* 网页爬虫 即:从网页中获取符合正则表达式的字符串或内容 从网络中获取邮箱地址 */ import java.io.*; import java.util.regex.*; import java.net.*; class  MailTest {  public static void main(String[] args) throws Exception  {   getMailAddr();  }  public static void getMailAddr()throws Exception  {   URL url=new URL("http://bbs.1sucai.cn/topics/390148495");   URLConnection con=url.openConnection();   BufferedReader bufIn=new BufferedReader(new InputStreamReader(con.getInputStream()));   BufferedWriter bufw=new BufferedWriter(new FileWriter(new File("e://mailaddress.txt")));   String str=null;   String regex="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(\.[a-zA-Z]+)+";   Pattern p=Pattern.compile(regex);   while((str=bufIn.readLine())!=null)   {    Matcher m=p.matcher(str);    while(m.find())    {     String ss=m.group();     bufw.write(ss,0,ss.length());     bufw.newLine();     bufw.flush();    }   }  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部