您现在的位置:首页 >> 前端 >> 内容

java使用正则来替换网页连接中href=“....”内容的方法

时间:2017/10/31 16:26:11 点击:

  核心提示:直接上代码,很简单,如果你是大神,请忽略本文章,这是给做web的新手!//主函数package com.yemian;import java.io.IOException;public class X...

直接上代码,很简单,如果你是大神,请忽略本文章,这是给做web的新手!

//主函数

package com.yemian;

import java.io.IOException;

public class Xin {

public static void main(String[] args) throws IOException {

//两个文件,第一个是在网站上下载的页面,第二个保存的文件,注意这里用的是gbk,utf需要转码,或者将IO的读取设为utf-8

Element el = new Element("555.html", "zf1.html");

el.run();

}

}

//替换类

package com.yemian;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.Writer;

import java.nio.charset.Charset;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Element {

private BufferedReader buf = null;

private Writer out = null;

private int n = 0;

public Element(String buf, String out) {

//super();

try {

this.buf = new BufferedReader(new InputStreamReader(new FileInputStream(new File(buf))));

this.out = new FileWriter(new File(out));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void run() throws IOException {

String str = null;

StringBuffer sb = new StringBuffer();

Pattern p = Pattern.compile("(](.*)");

Matcher m =null;

while((str = buf.readLine()) != null) {

str = href("(.*)(href=\"([^\"]{2,})\")([\\s>]?)(.*)",str);

out.write(str);

out.write("\r\n");

}

buf.close();

out.close();

System.out.println(n);

}

public String href(String regex,String str) {

Pattern p = Pattern.compile(regex);//建立匹配起

Matcher m = p.matcher(str);//匹配

String fs = null;

while(str.matches(regex)){

if(m.find()) {

str = m.group(1)+" href=\"#\" "+m.group(4)+m.group(5);

m = p.matcher(str);

}else{

break;

}

n++;//统计替换了多少个

m = p.matcher(str);//查找下一个可能有很多

}

return str;

}

}

Tags:JA AV VA A使 
作者:网络 来源:夜深了,我还在敲代码