본문 바로가기

전체 글691

문지캠퍼스에서 지난 학기부터 살기 시작한 기숙사는, 한가하다. 이제 한껏 봄이 옴을 낮이 되면 따스해진 햇살에서도 느낄 수 있기도 하려니와, 오늘은 아침에 나올 때 이름 모를 새가 열심히 지저귀는 것에서도 괜히 느낄 수 있는 것 같다. 그 새가 봄과 함께 온 것인지, 아니면 겨울에도 으레 그래 왔지만 내가 녀석의 소리를 기억 속에 남기지 않은 것인지 확신할 수는 없지만. 이따금씩 보이던 박새일까, 하는 생각이 잠깐 들긴 했는데, 아마도 박새는 저리 다양한 음색으로 지저귀는 것 같지 않다는 생각이 살짝 들었고, 이내 곧 잊혀 졌다. 점심때쯤 일어나 밥을 먹고, 아직 남아 있는 얼마의 시간동안은 그냥 밖에서 서성대거나 벤치에 앉아 있곤 한다. 얼마 전까지만 해도 바람이 불면 아직 밖에 앉아 있기에는 추운 날씨였지만 이제는.. 2011. 2. 25.
정규표현식이 들어간 디버깅 정규표현식을 이용하여 작업을 하려고 할 때, 원하는 패턴으로 matching 을 시켜서 일치된 패턴을 추출하여 사용하려 할 때가 자주 있다. 문제는 일치된 결과가 하나도 없을 때 왜 패턴 matching 이 되지 않았는지 알기 어렵다는 것인데, 다음과 같이 점진적으로 패턴을 지워 나가거나, 추가해 나가는 식으로 하면 왜 자신이 작성한 정규표현식이 주어진 텍스트에 맞지 않았는지에 대한 약간의 실마리를 얻을 수 있다. (아래는 파이썬에서의 사용 예. 펄이나 C++(boost에서), vim 도 비슷하게 할 수 있다) 지금 내가 만난 문제는 이렇다. 일단 원본 텍스트가 다음과 같다. uniprotkb:P47068|intact:EBI-3437 이 상황에서 위의 붉은 색으로 표시한 문자열(실제로는 db 의 ID)을.. 2011. 2. 24.
자리 이사 너무 근 일년동안 구석에 짱박혀 있었다. 그래서 그런지 게을러지고 있다고 느끼기 시작했고, 그래서 자리이동을 제안. 일단 긍정적 반응을 얻은 후, 일 때문에 잊고 있었는데, 지난 금요일 갑자기 일이 진행되어, 생각했던 것보다 큰 일이 되었다. 난 다른 사람이랑 자리를 교환하는 식으로 생각했는데, 나까지 세 명이 이동하게 되면서 각자가 다른 사람이 있던 곳으로 이동하는 형식. rotation 이 된 것인데, 문제는 그 3명의 방이 모두 달랐다는 점. 가구 이동하며, 자리 이동하며, 이 기회에 3 방이 모두 구조가 살짝씩 바뀌었다. 헐. 난 그냥 자리만 살짝 바꿀 생각이었는데 >.. 2011. 2. 22.
정규표현식의 최소일치(non-greedy match) 정규 표현식에서 최소 일치 (non-greedy match)는 주어진 조건이 만족되는 최초의 위치까지를 일치하는 것으로 간주함을 의미한다. 정확한 의미는 예제를 살펴 보면 더 확실해 진다. 우선 vim에서의 사용법을 살펴 보고, 후에 python에서의 사용 예를 살펴 본다. python 이나 vim 에서 정규표현식을 사용할 때 점 한 개(.)는 '모든 문자'를 의미하게 된다. 예를 들면 vim에서 /line.\+$ 를 하면 각 줄에서 line 이란 문자열이 나타나는 곳에서부터 아무 문자(.)나 아무 개수(\+)나 나오고 줄 끝($)까지 를 찾는다는 의미이다. 그래서 다음과 같은 결과를 얻는다. 그 원리를 도식적으로 설명하자면 다음과 같다. 문제는 .\+ 을 사용하여 특정 조건으로 감싸는 모든 글자를 선택.. 2011. 2. 21.