Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 문자열에서 HTML 태그 제거하는 방법 완벽 가이드

Java에서 Stringfinal 클래스이며 불변(immutable) 객체입니다. 즉, 객체 자체는 변경할 수 없고 객체에 대한 참조만 변경할 수 있습니다. 주어진 문자열에서 HTML 태그를 제거하려면 String 클래스의 replaceAll() 메서드를 활용할 수 있습니다.

HTML 태그를 제거하는 핵심은 정규 표현식(Regular Expression)을 사용하는 것입니다. 정규 표현식으로 '<'와 '>' 사이의 모든 내용을 매칭한 뒤 빈 문자열로 치환하면, 순수한 일반 텍스트만 남게 됩니다.

replaceAll() 메서드 문법

public String replaceAll(String regex, String replacement)
  • regex: 매칭에 사용할 정규 표현식
  • replacement: 매칭된 부분을 대체할 문자열

예제 코드

public class RemoveHTMLTagsTest {
    public static void main(String[] args) {
        String str = "<p><b>Welcome to Tutorials Point</b></p>";
        System.out.println("Before removing HTML Tags: " + str);
        str = str.replaceAll("\\<.*?\\>", "");
        System.out.println("After removing HTML Tags: " + str);
    }
}

실행 결과

Before removing HTML Tags: <p><b>Welcome to Tutorials Point</b></p>
After removing HTML Tags: Welcome to Tutorials Point

정규 표현식 설명

위 예제에서 사용한 정규 표현식 "\\<.*?\\>"은 다음과 같은 의미를 가집니다.

  • \\<: 여는 꺾쇠 괄호 '<'를 찾습니다.
  • .*?: 임의의 문자가 0개 이상 나오는 부분을 최소한으로(non-greedy) 매칭합니다. 탐욕적 매칭(greedy)을 사용하면 여러 개의 태그가 하나로 묶여 잘못 제거될 수 있으므로 반드시 '?'를 붙여야 합니다.
  • \\>: 닫는 꺾쇠 괄호 '>'를 찾습니다.

주의사항

간단한 경우에는 이 방법이 효과적이지만, 실제 운영 환경에서 복잡하거나 신뢰할 수 없는 HTML을 처리해야 한다면 Jsoup 같은 전용 HTML 파싱 라이브러리를 사용하는 것이 더 안전하고 견고합니다. 정규 표현식 기반 제거는 속성 값 안에 '>' 문자가 포함된 경우나 스크립트 태그 처리 등 예외 상황에서 한계가 있기 때문입니다.