正規表現で、とにかく http で始まる URL らしきものの取得


  Java



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();
		}
		

	}

}











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ