2010년 9월 28일 화요일

정규표현식의 함정

손에 잡히는 정규표현식이란 책을 읽고 정규표현식의 매력에 푹 빠져있었다.
어쩌면 제대로 쓸 기회를 갖지 못해서 뜬구름만 잡고 환상속에 살고 있었는지도,,

업무에 관계되어 요 며칠 정규표현식을 뒤지고 다녔다.

무려 14개나 되는 패턴을 만들어놓고
하나씩 지워나가도록 했다.

html 파일에서 처음엔 스크립트 태그들을 지우고, 그 다음은 스타일 태그,,
신나서 이것저것 자꾸만 추가했다가
오늘에야 뒤통수 맞은 느낌을...

나처럼 어설프게 배워서는 정규표현식을 최적화 하지 않고 마구잡이로 쓰다간
CPU 사용률 100% 에 속터지게 느려지는 컴퓨터와 마주하게 될 것이다.

자바에는 정규표현식을 쓰지 않아도 왠만큼 처리가능한 많은 클래스가 있다.
간과하고 있었다.

CPU를 괴롭히던 녀석은 [^ㄱ-ㅎㅏ-ㅣ가-힣\w] 인데
특수문자들을 제거하기 위해 넣었던 놈이다.

혹시나 하고 검색을 해보니 발견.. 두둥

boolean java.lang.Character.isLetterOrDigit(char ch)

한글까지 지원된다고 하니 즉시 교체,,
성능은 대 만족!!

뭐든 어설프게 배워서 좀 안다고 까불다간 큰코다친다는 오늘의 교훈!