투케이2K

251. (java/자바) 정규식 패턴을 사용해서 html 태그 및 엔터티 문자 제거 수행 실시 본문

Java

251. (java/자바) 정규식 패턴을 사용해서 html 태그 및 엔터티 문자 제거 수행 실시

투케이2K 2022. 4. 1. 11:35
반응형

[개발 환경 설정]

개발 툴 : Eclipse

개발 언어 : Java

 

[소스 코드]

package ex;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class MainActivity8 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// [초기 변수 선언 실시]
		String htmlData = "<p>test url</p><p><a href=&quot;https://www.naver.com&quot;>https://www.naver.com</a></p><p>&#09;&amp;nbsp;</p><p>입니다</p><p>&amp;nbsp;</p>";

		
		// [html 태그 제거 수행 실시]
		htmlTagRemoveString(htmlData);
				
	} // [메인 종료]
	
	
	public static String htmlTagRemoveString(String data) {
		
         /**
         * // -----------------------------------------
         * [htmlTagRemoveString 메소드 설명]
         * // -----------------------------------------
         * 1. html 형식 태그 제거 문자열 데이터 반환
         * // -----------------------------------------
         * 2. 호출 방식 :
         *   String data = "<p>test url</p><p><a href=&quot;https://www.naver.com&quot;>https://www.naver.com</a></p><p>&amp;nbsp;</p><p>입니다</p><p>&amp;nbsp;</p>";
         *
         *   C_Util.htmlTagRemoveString(data);
         * // -----------------------------------------
         * 3. 리턴 데이터 : html 형식 태그 제거 문자열 반환
         * // -----------------------------------------
         * */

        // [리턴 데이터 변수 선언 실시]
        String result = "";

        // [문자열 데이터 널 판단 수행 실시]
        if (data != null
                && data.length()>0
                && data.trim().equals("") == false
                && data.trim().equals("null") == false
                && data.trim().equals("undefined") == false){ // [널이 아닌 경우]

            try {
            	// [html 태그를 제거 하기 위한 패턴 정의 실시]
            	String tag_pattern = "<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>"; // [<p> 등 태그 제거]
            	Pattern num_reg_entity_pattern = Pattern.compile("&#[0-9]+;"); // [&#09; 형태 제거]
            	Pattern char_reg_entity_pattern = Pattern.compile("&[a-zA-Z]+;"); // [&amp; 형태 제거]
            	Pattern char_normal_entity_pattern = Pattern.compile(" [a-zA-Z]+;"); // [amp; 형태 제거]
            	
            	
                // [html 태그 1차 제거 실시]
                result = data.replaceAll(tag_pattern, " ");

                
                // [html 태그 2차 제거 실시]
                Matcher num_reg_mat = num_reg_entity_pattern.matcher(result);
                result = num_reg_mat.replaceAll("");
                
                Matcher char_reg_mat = char_reg_entity_pattern.matcher(result);
                result = char_reg_mat.replaceAll("");
                
                Matcher char_normal_mat = char_normal_entity_pattern.matcher(result);
                result = char_normal_mat.replaceAll("");
                
                
                // [html 태그 연속 공백 제거 실시]
                result = result.replaceAll("\\s+", " ");

                // [문자열 양쪽 끝 공백 제거 실시]
                result = result.trim();
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }

        // [로그 출력 실시]
        ///*
        System.out.println("");
        System.out.println("================================================");
        System.out.println("[htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 실시]");
        System.out.println("input :: " + String.valueOf(data));
        System.out.println("result :: " + String.valueOf(result.toString()));
        System.out.println("================================================");
        System.out.println("");
        // */

        // [리턴 데이터 반환 실시]
        return result;
	}

} // [클래스 종료]

 

[결과 출력]

 

 

반응형
Comments