728x90
반응형

정규식을 간단히 정의하면 문서에서 원하는 패턴을 찾아 원하는대로 바꾸기 위한 일종의 수식이다.

 

경제 이야기 하면서 '변수'와 '상수' 얘기를 한적이 있는데...

 

상수(constant)란 이런거다.

 

10

20

최완규

 

변수(variable)란 이런거다.

 

x

y

이름

 

그러니까 상수라는 건 값이 이미 정해져서 바뀔 일이 없는 것들이고 변수란 값이 정해지지 않은 것들을 말한다.

 

10 이라는 숫자는 변수가 될 수 없다. 10이라는 값이 이미 정해져 있어서 다른 수가 될 수 없으니까... '최완규'라는 이름도 마찬가지다. (개명하면 되지 않느냐는 식의 딴지는 걍 무시한다ㅡ,.ㅡ)

 

근데...

 

x니 y니 하는 건 어떤 값도 될 수 있다, x=1, x=2, x=3.1 식으로 변할 수 있다는 거다. '이름'이라는 것도 '최완규'도 되고 '대두족장'도 되고, bundy도 되고 뻔디도 된다. 모두 가변적이라는 말이다.

 

느닷없이 왜 상수/변수 얘기를 하느냐고?

 

여러분이 알고 있는 편집기 또는 워드프로세서에 있는 '찾고 바꾸기' 기능은 바로 '상수'만을 찾고 바꿀 수 있다.

 

정규식이 울트라 캡쑝 나이스 짱인 이유는 변수를 허용하기 때문이다.

 

일반 찾고 바꾸기는 이딴 것만 가능하다.

 

- '최완규'를 찾아서 '대두족장'으로 바꿔라.

 

- 100 이라는 숫자를 찾아서 200 으로 바꿔라.

 

정규식은 이딴 게 가능하다.

 

- '최 완규'식으로 썼건 '최완규'식으로 썼건 성 없이 그냥 '완규'로 썼건 모두 '대두족장'으로 바꿔라 (이름 찾는데 변수 허용)

 

- x@y.com 식의 이메일 주소를 찾아서 "x at y.com"으로 바꿔라 (찾기에서도 변수를 허용하고 찾은 항목을 바꾸기에서 변수로 활용)

 

- '80년도' 식으로 두자리 숫자+'년도'라는 말이 붙은 모든 표현을 찾아 앞에 '19'를 붙인다 -> 1980년도, 1982년도, 1999년도 (역시 찾기와 바꾸기 모두에 변수 허용)

 

그러니까...

 

쉬운말로 하면 (위에 나온 말 헷갈린다고 고민할 필요 없다. 다 설명할거니까...) 찾고 바꾸기에 '방정식'과 같은 수식을 써서 해당 패턴을 찾고, 그 결과를 재활용해 바꾸기를 할 수 있다는 거다.

 

마지막 예를 고민해보자.

 

Y2K 버그 중 하나다. 80년도 라는 식의 말...

 

근데 잘 생각해 보자. 어떤 패턴이 있는지.

 

패턴 인식: 숫자 두개+년도라는 단어

 

아주 간단하다.

 

이걸 정규식으로 표현하면 (자세한건 나중에 다시 설명한다.) 이렇게 된다.

 

정규식: [0-9][0-9]년도

 

요렇게만 찾기를 해도 80년도, 82년도 이딴 말 몽땅 찾는다. 물론, 저렇게 하면 1980년도도 찾는다. 따라서 완벽하게 두자리숫자로 시작되는 년도만 찾으려면 앞에 공백을 추가해줘야 한다. 이런식일테니까...

 

그는 80년도에 태어났다.

 

수정 패턴:  [0-9][0-9]년도

 

찾기 패턴은 앞으로도 계속 바탕색을 초록색으로 나타낼 생각이다. 공백도 패턴중 하나니 눈여겨 봐야 한다.

 

그럼 이제 정말 두자리숫자로된 80년도식의 표현만 몽땅 찾는다.

 

찾은 표현을 바꾸기에 활용하려면 한가지 작업을 더 해줘야 한다. 바꾸기에 활용하려는 부분을 괄호로 감싸주는 거다.

 

수정 패턴:  ([0-9][0-9])년도

 

 

 

그리고 나서 다음 바꾸기 패턴을 적용한다.

 

바꾸기 패턴 19\1년도


 

\1 라는 부분이 중요하다. 찾기에서 괄호를 사용한 첫번째 부분을 나타낸다. 괄호를 두개 썼으면 \1, \2 식으로 활용할 수 있다. (\ 의 의미에 대해서도 나중에 설명한다. 지금은 그냥 대충 그러려니 하면 된다.)

 

그러니까...

 

그는 80년도에 태어났다.

 

요 문장에서 80년도라는 표현을 찾아서 괄호로 감싼 (80) 이라는 변수를 바꾸기 패턴에 응용하면  1980년도로 바꿔준다는 말이다.

 

그는 80년도에 태어났다. -> 그는 1980년도에 태어났다.

 

 

 

헷갈린다고 좌절마시라.

 

그냥 맛보기다. 정규식이란게 뭔지 걍 느끼기만 하면 된다.

 

정규식은 찾기 패턴만으로도 막강 파워지만... 그 진정한 빠우어~~~는 바꾸기 패턴에서 나온다.

 

그것만 기억하자.

 

패턴 인식 3회부터 정규식을 차근 차근 배워보기로 한다.

 

UltraEdit 사용법

 

원고는 '대두족장 정규식 편집기'를 기준으로 한다. 찾기 패턴을 입력하라고 하면 찾기 입력창에 입력하라는 말이고 바꾸기 패턴을 입력하라고 하면 바꾸기 입력창에 입력하라는 말이다.

 

UltraEdit를 사용할때도 마찬가지다. 찾고 바꾸기를 하는 메뉴에서 해당 대화상자를 불러와서 찾기 입력창과 바꾸기 입력창에 패턴을 입력하면 된다.

 

단, UltraEdit는 표준 정규식이 기본값이 아니다. 따라서, 표준 정규식을 쓰도록 설정을 해야 한다. 고급 설정 메뉴에 들어가면 '검색' 항목 아래에 'Unix 형태 정규식' 이라는 체크 상자가 있다. 이거 꼭 체크해줘야 한다.

 

 

 

또, 찾고 바꾸기를 할 때도 대화상자에 정규식이라는 체크 상자가 있다. 이걸 체크해줘야 정규식이 먹는다.

 

앞에 나온 예를 UltraEdit에서 적용한 이미지는 다음과 같다.

 

 


 

 
정규식 체크 상자를 체크해줘야 정규식 패턴이 먹는다.
저걸 체크하지 않으면 곧이곧대로  [0-9][0-9]년도라는 글자들을 찾는다.


 


 

찾고 바꾸기 역시 '정규식' 체크해줘야 한다.
물론, 한번 체크해두면 계속 선택된 상태로 돼 있다.
 
 
 
정규식을 어느 정도 활용할 줄 알게 되면 UltraEdit를 쓸 것을 권한다. 그만큼 좋은 에디터이기 때문이다.
 
근데 정규식을 배우는 과정에서는 조금 불편함이 따른다. '대두족장 정규식 편집기'는 정규식에 집중할 수 있도록 찾은 부분을 이따시만하게 빨간색으로 보여주기도 하고 정규식 패턴을 매크로로 저장할 수도 있기 때문에 배우는 단계이거나 편집기로서가 아닌 정규식 적용 도구로서만 활용한다면 UltraEdit보다 편하게 쓸 수 있다.
 
고급 편집 기능까지 모두 원한다면 당근 UltraEdit를 써야 한다.
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,