먼저 HTML 태그는 < 로 시작해서 > 로 끝나고, 종료 태그의 경우는 </ 로 시작하거나 또는 />로 끝난다.
따라서, 다음과 같은 정규 표현식은 HTML 태그를 모두 포함하게 된다.
<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>
자바 1.4부터 String.repalceAll(String regex, String replacemenet) 메소드를 제공하는데, 이 메소드는 문자열에서 regex의 정규 표현식에 일치하는 부분을 replacement로 바꿔주는 기능을 제공한다.
따라서, 특정 문자열에 HTML 태그를 제거하려면 위의 정규 표현식을 다음과 같이 적용하면 된다.
따라서, 다음과 같은 정규 표현식은 HTML 태그를 모두 포함하게 된다.
<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>
자바 1.4부터 String.repalceAll(String regex, String replacemenet) 메소드를 제공하는데, 이 메소드는 문자열에서 regex의 정규 표현식에 일치하는 부분을 replacement로 바꿔주는 기능을 제공한다.
따라서, 특정 문자열에 HTML 태그를 제거하려면 위의 정규 표현식을 다음과 같이 적용하면 된다.
String text = "......";
String textWithoutTag = text.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "");
import java.util.*;
public class Test
{
public static void main(String[] args)
{
String data = " <a href="aaa.gif">";
data += "Afdskjhasdkljhaskld" + "</a>";
System.out.println( data.replaceAll("(?:<!--.*?(?:--.*?--\\s*)*.*?-->)|(?:<(?:[^>'\"]*|\".*?\"|'.*?')+>)","") );
}
}
'Java' 카테고리의 다른 글
| LinkedHashMap 기반으로 LRU(least-recently-used) 캐시하기 (0) | 2008/02/26 |
|---|---|
| Iterator보다 빠르게 Collection의 오브젝트 처리 (0) | 2008/02/21 |
| 정규 표현식을 사용하여 HTML 태그 제거하기 (0) | 2008/02/19 |
| String 인코딩 변경 (0) | 2008/02/19 |
| Boxing과 UnBoxing (0) | 2008/02/19 |