Perl 을 모르는 상황에서 Emacs 만큼 강력한 정규표현식 도구가 따로 없습니다. (vim 은 제외 이제 저는 vim 을 마음속에서도 지웠습니다 ㅋㅋ) 

다음과 같은 상황에서 어떻게 이맥스를 이용해서 문자열을 치환하는  지에 관한 예제 입니다. 


1
2
3
4
...

5053
5054  <-- 이게 앞으로 삭제될 예정
5055
..

100000 


이런 상황은 거의 없을 듯 하지만 수동으로 인덱스를 맞춰줄려면 보통의 인내심으로 되는 것이 아닐 것입니다. 이맥스(Emacs) 에서는 정말 간단하게 작업할 수가 있습니다.

5055 ~ 부터 100000 까지 영역(Region) 을 설정해 줍니다. 그리고 



 M-x replace-regexp
  Replace regexp: ^[0-9]+
  Replace regexp with \,(1- \#&)

이 명령을 실행하면 나머지 숫자까지 아름답게 맞춰집니다. 간단히 부연 설명 하자면 \, <-- 다음 나오는 함수를 실행하라는 명령이고요. 1- 는 숫자값을 한개씩 빼라는 이야깁니다. (숫자값을 한개씩 더하는 명령은 1+ 입니다) \#& 는 \& 와 # 을 합친 것 인데요. \& 는 찾은 정규표현식 전체를 의미하고 # 은 찾은 문자열을 숫자로 변환하라는 뜻입니다. 


 
매번 Emacs 로 작업할 때 간단한 정규표현식인데 자꾸 까먹는 방법입니다. 오늘은 큰맘 먹고 적어서 기록을 남기기로 합니다. 

예를 들면 
 
Blinds, Fade, Fly, Iris, Photo, PixelDissolve, Rotate, Squeeze, Wipe, Zoom, Random

이렇게 단어만 나열 되어 있는 내용들을 복사해 왔을 때, 문자열 모음으로 바꾸고 싶을 것입니다. 

 "Blinds", "Fade", "Fly", "Iris", "Photo", "PixelDissolve", "Rotate", "Squeeze", "Wipe", "Zoom", "Random"


가장 쉬운 방법으로는 일일이 손으로 쳐 넣는 것이 있습니다. 쉽긴 하지만 내가 뭐하나 싶을 때가 있지요. 


M-x replace-regexp 

로 그림에 나와 있는 방법대로 치면 됩니다. \(\<\w+\>\) RET "\1"       : RET 은 Enter 키 한번 치는 것입니다. 



+ Recent posts