개발/자바

자바 html 태그 제거 메소드

피터JK 2025. 1. 15. 16:15
728x90

Java에서 HTML 태그를 제거하려면 정규식을 사용할 수 있습니다.

예를 들어, HTML 문자열에서 모든 태그를 제거하려면 replaceAll() 메서드를 활용할 수 있습니다.

public class HtmlUtil {

    /**
     * HTML 문자열에서 <br>, <p> 태그를 개행으로 치환하고 
     * 나머지 태그와 HTML 엔티티(&nbsp; 등)를 제거합니다.
     *
     * @param htmlString HTML 문자열
     * @return 가공된 텍스트
     */
    public static String stripHtml(String htmlString) {
        if (htmlString == null) {
            return "";
        }

        // 1. <br> 태그를 개행으로 변환
        String result = htmlString.replaceAll("<br\\s*/?>", "\n");

        // 2. <p> 태그를 개행으로 변환 (속성 포함 처리)
        result = result.replaceAll("<p[^>]*>", "\n");

        // 3. 나머지 HTML 태그 제거
        result = result.replaceAll("<[^>]*>", "");

        // 4. HTML 엔티티(예: &nbsp;, &lt;, &gt;, &amp; 등) 공백으로 대체
        result = result.replaceAll("&[^;]+;", " ");

        // 불필요한 중복 공백/개행 정리(선택사항)
        // result = result.replaceAll("\\s+", " ").trim();

        return result;
    }
}

사용예시

public class Main {
    public static void main(String[] args) {
        String html = "<html><body><h1>Hello&nbsp;World!</h1>"
            + "<p>This&nbsp;is&nbsp;a&nbsp;paragraph.</p>"
            + "<br>New line after break."
            + "</body></html>";

        String cleanText = HtmlUtil.stripHtml(html);
        System.out.println(cleanText);
    }
}

주요 처리 사항:

  1. <br> 태그: <br\\s*/?>를 \n으로 변환. (공백이 있을 수 있기 때문에 \\s*로 처리)
  2. <p> 태그: <p[^>]*>를 \n으로 변환. (<p> 또는 <p>에 추가 속성 있는 경우도 처리)
  3. 다른 HTML 태그 제거: <[^>]*>로 나머지 HTML 태그 제거.
  4. HTML 엔티티 제거: &[^;]+;를 공백으로 대체하여 엔티티를 제거.

출력 결과:

Hello World!
This is a paragraph.
New line after break.
728x90