Monday, December 29, 2008

Remove nonword character

Lperl에서 non-word character를 regexp에서 지정하려면
\W 를 쓰면 된다.

parkinson's disease 라는 문자열에서 's를 제거한다면


$line='parkinson's disease';
$line=~s/\Ws//;


와 같이 쓸 수 있다.

그러나 윈도우 시스템에서 특수 문자로 지정된 " ' " 는 하나의
위의 정규식으로 처리되지 않는다.

대신

$line=~s/\W+s//;


를 써야 제대로 동작한다. 윈도우 특수 문자의 경우 non-word character가
리눅스 시스템에서 하나 이상의 character로 표현되는 경우가 많기 때문이다.

오늘 맞부닥친 특수 문자의 경우 3개의 문자로 구성되어 있었다.
이것 때문에 삽질을 장시간 ㅜㅜ