import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HttpGetAndRegex {
/**
* @param args
*/
public static void main(String[] args) {
try {
URL url = new URL("http://gigazine.net/");
// 接続オブジェクト
HttpURLConnection http = (HttpURLConnection)url.openConnection();
http.setRequestMethod("GET");
// 接続
http.connect();
// http から InputStream を取得する
InputStream i_stream = http.getInputStream();
// InputStream から リーダを作成する( キャラクタセットを指定 )
// UTF-8 でリーダーを作成( インターネット上のデータが UTF-8 なので )
InputStreamReader i_stream_reader = new InputStreamReader(i_stream, "UTF-8");
// リーダを行単位で読み込める BufferedReader を使って全ての文字列を取得する )
BufferedReader buffer_reader = new BufferedReader(i_stream_reader);
String result_string = "";
String line_buffer = null;
// BufferedReader は、readLine が null を返すと読み込み終了
while ( null != (line_buffer = buffer_reader.readLine() ) ) {
result_string += line_buffer;
}
// 全て閉じる
buffer_reader.close();
i_stream_reader.close();
i_stream.close();
http.disconnect();
// **************************************************
// 書き出し用テキストファイルの用意
// http://docs.oracle.com/javase/jp/7/technotes/guides/intl/encoding.doc.html
// **************************************************
PrintWriter pw = new PrintWriter(".\\result.txt", "SHIFT_JIS");
// PrintWriter pw = new PrintWriter(".\\result.txt", "EUC-JP");
pw.println( "SHIFT_JIS で書き込んでいます" );
// **************************************************
// 正規表現による検索開始
// **************************************************
String regex = "(https?://.+?)[\"']?[;)>\\s]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(result_string);
while(matcher.find()){
System.out.println(matcher.group(1));
pw.println( matcher.group(1) );
}
pw.flush();
pw.close();
}
catch( Exception e ) {
e.printStackTrace();
}
}
}