[java] 정규식을 이용한 html 태그 제거

문자열에 포함된 html 태그를 지우고 싶을 때에는 정규표현식을 많이 이용한다.
정규표현식이란  문자열 데이터에서 원하는 조건을 패턴의 형식으로 찾아내는 것을 말한다.
정규식은 전화번호, 주민등록번호, 이메일처럼 특정한 패턴이 있는 경우에 특히 많이 이용하게 된다.

정규식을 이용한 문자열 html 제거

<article id="dic_area" class="go_trans _article_content" style="-webkit-tap-highlight-color: rgba(0,0,0,0)">
<strong class="media_end_summary">기본 앱 '메시지'에 <span data-type="ore" data-lang="en">RCS</span> 규격 추가…애플 기기간 '아이메시지'는 유지</strong>
아이폰에 기본 탑재된 문자메시지 전송 앱 '메시지'에 한 세대 전 규격인 <span data-type="ore" data-lang="en">SMS</span>/<span data-type="ore" data-lang="en">MMS</span>만 고집하던 애플이 구글과 유럽연합(<span data-type="ore" data-lang="en">EU</span>) 압박에 결국 백기를 들었다.
<div class="nbd_a _LAZY_LOADING_ERROR_HIDE" id="img_a1">
<img id="img1" class="_LAZY_LOADING" src="https://imgnews.pstatic.net/image/092/2023/11/17/0002311887_001_20231117153101183.jpg?type=w647">
</div>
</article>

 html 태그가 들어있는 샘플 코드이다.
<article> 태그 안에 텍스트와 <span><img><strong> 태그가 골고루 들어 있다.
 

contents.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "");

 
정규식을 만들고 replaceAll을 통해 해당되는 문자열을 공백으로 지운다.
 
기본 앱 '메시지'에 <span data-type="ore" data-lang="en">RCS 규격 추가…애플 기기간 '아이메시지'는 유지
아이폰에 기본 탑재된 문자메시지 전송 앱 '메시지'에 한 세대 전 규격인 <span data-type="ore" data-lang="en">SMS/<span data-type="ore" data-lang="en">MMS만 고집하던 애플이 구글과 유럽연합(<span data-type="ore" data-lang="en">EU) 압박에 결국 백기를 들었다.
 
정규식을 대입해 보면 일반적인 태그형식들은 다 지워졌지만 태그 안에 있는 태그들은 남아있는 것을 확인할 수 있다.

contents.replaceAll("<[^>]*>", " ");

 
모든 태그의 형식들을 지우고 싶다면 위의 정규식을 이용하면 된다.
 
기본 앱 '메시지'에  RCS  규격 추가…애플 기기간 '아이메시지'는 유지 
아이폰에 기본 탑재된 문자메시지 전송 앱 '메시지'에 한 세대 전 규격인  SMS / MMS 만 고집하던 애플이 구글과 유럽연합( EU ) 압박에 결국 백기를 들었다.