java에서 replaceAll 함수를 이용하여 문자열 내의 태그 제거하기
?! 사용해야 하는 걸 알아내느라 애먹었다.
참고: http://nosyu.pe.kr/1139
(?<=.....) : 긍정형 룩비하인드 - 하위 표현식(..... 부분)이 왼쪽에 매치될 때
(?<!.....) : 부정형 룩비하인드 - 하위 표현식(..... 부분)이 왼쪽에 매치되지 않을 때
(?=.....) : 긍정형 룩어헤드 - 하위 표현식(..... 부분)이 오른쪽에 매치될 때
(?!.....) : 부정형 룩어헤드 - 하위 표현식(..... 부분)이 오른쪽에 매치되지 않을 때
(?!(/[aA])|([aA])). 에서와 같이 /a /A 또는 a A 와 매치하지 않는 것을 찾아내는 정규표현식임.
/** * 주어진 문자열에서 태그를 모두 제거한다. * @param str 원본 문자열 * @param replacement 대체할 문자열 * @return */ public static String replaceTag(String str, String replacement) { // <로 시작. /가 0번 또는 1번 나옴. (a-zA-Z문자가 0번 이상)이 한 묶음. // (\s 공백문자. a-Z문자가 0번 이상. = 나옴. > 제외한 문자 0번 이상.)이 한 묶음으로 0번 또는 1번 나옴. <- 태그 다음 공백부터 > 전까지. ==> 속성 // 공백 0번 이상. /가 0번 또는 1번. >로 끝. // ex) <a href="www.naver.com" title="title" >NAVER</a> return str.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", replacement); } /** * 주어진 문자열에서 a 태그를 제외한 태그를 모두 제거한다. * @param str 원본 문자열 * @param replacement 대체할 문자열 * @return */ public static String replaceTagExceptA(String str, String replacement) { // /aA 또는 aA가 아닌 것으로 시작하는 모든 태그 return str.replaceAll("<(?!(/[aA])|([aA])).([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", replacement); } |
?! 사용해야 하는 걸 알아내느라 애먹었다.
참고: http://nosyu.pe.kr/1139
(?<=.....) : 긍정형 룩비하인드 - 하위 표현식(..... 부분)이 왼쪽에 매치될 때
(?<!.....) : 부정형 룩비하인드 - 하위 표현식(..... 부분)이 왼쪽에 매치되지 않을 때
(?=.....) : 긍정형 룩어헤드 - 하위 표현식(..... 부분)이 오른쪽에 매치될 때
(?!.....) : 부정형 룩어헤드 - 하위 표현식(..... 부분)이 오른쪽에 매치되지 않을 때
(?!(/[aA])|([aA])). 에서와 같이 /a /A 또는 a A 와 매치하지 않는 것을 찾아내는 정규표현식임.
'프로그래밍 > Library' 카테고리의 다른 글
[ETC] 크롬으로 플래시 동영상 주소 알아내기 (0) | 2010.11.29 |
---|---|
[ETC] 네이버에서 오른쪽 클릭 방지 풀기 (0) | 2010.11.29 |
[ftp] FTP/SFTP/FTPS 의 차이점 (0) | 2010.10.18 |
[eclipse] plug-ins (0) | 2010.08.17 |
[browser] MS Expension Web SuperView (0) | 2010.04.08 |