Java에서 String은 final 클래스이며 불변(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 파싱 라이브러리를 사용하는 것이 더 안전하고 견고합니다. 정규 표현식 기반 제거는 속성 값 안에 '>' 문자가 포함된 경우나 스크립트 태그 처리 등 예외 상황에서 한계가 있기 때문입니다.