mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, June 14, 2006

정규식 / 정규표현식 (Regular Expressions; Regex) 이란?


정규식이란, 문자열을 검색/치환/추출할 때 사용하는 일종의 '공식'입니다. 원래는 유닉스에서 사용되었지만 이제는 윈도우용 프로그램에서도 널리 쓰입니다.

가령 도스 프롬프트에서의 와일드카드 Wild Card 를 예로 들어보겠습니다.

dir *.txt 라고 입력하면,

123.txt
ABCD.txt
똠방.txt
똠방ABCD각하.txt

등, 모든 .txt 확장자를 가진 파일들의 목록이 한꺼번에 출력됩니다. 여기서 *표는, '임의의 문자들'을 의미하는 와일드 카드입니다. 물론 와일드카드가, 정규식은 아니지만, 정규식도 이것과 비슷합니다. 물론 훨씬 더 강력한 것입니다.


가장 기초적인 예제


/나는/
이라는 정규식이 있다면 "나는"이라는 모든 문자열을 찾습니다.

/^나는/
이것은 "나는"으로 시작되는 "나는"이라는 단어를 찾는 것입니다. "나는"이라는 문자열이 문장의 중간에 있거나 끝에 있다면 찾지 않습니다. 왜냐하면 정규식에서, 캐럿(^) 기호는 "문자열의 맨처음"을 의미하기 때문입니다.

/주소$/
위의 정규식을, "주소 좀 알려 주소"라는 문장에 적용하면 앞의 "주소"는 매치되지 않고 뒤의 "주소"만 매치됩니다. 정규식에서 $ 는 문자열의 끝을 의미하기 때문입니다. (행갈이 문자를 의미하지는 않고 그냥 단순히 문자열의 끝부분을 의미함)

/^하하하하$/
이것은 "하하하하"라는 문자열로만 이루어진 행을 매치합니다. 캐럿과 달러 기호가 앞뒤로 있기 때문에, "하하하하"로 시작해야 하고 "하하하하"로 끝나야 합니다. 그런 경우는 그 문장이 "하하하하"로만 이루어진 경우에만 가능하기 때문입니다. "하하하하 ㅎㅎ", "ㅋㅋ 하하하하 안녕" 이런 문장 속의 "하하하하"는 매치되지 않습니다.


이런 식입니다. 그러나 이것은 간단한 예일 뿐이고, 복잡한 정규식은 한없이 복잡합니다.


정규식을 사용할 수 있는 프로그램


* 각종 텍스트 에디터에서, 복잡한 문자열을 찾고 치환할 때 정규식을 사용합니다. 울트라에디터는 물론이고 거의 모든 텍스트에디터에서 정규식을 지원하지만, 제가 보기로 정규식을 가장 깔끔하게, 그리고 한글도 완벽하게 지원하는 에디터는 이엠에디터(EmEditor)였습니다.

* 프로그래밍 언어에서 문자열을 검색/치환할 때 사용됩니다. C/C++를 제외한, 사실상 모든 언어에서 정규식을 공식적으로 지원하는데, 역시 최고봉은 펄(Perl)입니다. (C++도, Boost C++ Libraries 를 사용하면 정규식을 쓸 수 있습니다.)


장점


문자열을 다루기 위해서 굳이 수십 수백 줄의 프로그래밍을 하지 않아도, 정규식 1~2줄만 있으면 대부분의 문자열 작업을 해낼 수 있습니다.


단점


* 프로그램마다 정규식 문법에 약간씩 차이가 있어, 호환이 안될 때가 많습니다. 표준 정규식도 있는 것으로 알고 있는데 기능이 미약하여, 현재 사실상의 표준은 펄(Perl)의 정규식입니다. 펄의 그것이 가장 강력합니다.




tag: regex
정규식 | 정규표현식 | Regex | Regular Expression
tag: editor
텍스트 에디터 | 문서 편집기 | Text Editor
tag: perl
Perl | 펄

2 Comments:
At June 14, 2006 at 2:30 PM, Blogger mwultong said...

유니코드 인코딩이라서
똠방도 표현이 되더군요.

완성형에서는 똠방이 되지 않고
'확장 완성형'에서는 되었는데
'확장 완성형'이란 게 문제가 많은 인코딩이라서 논란이 많습니다.

(∩_∩)

 
At April 1, 2007 at 3:16 PM, Anonymous Anonymous said...

랄라라님의 코멘트:

* 똠방각하라는 단어를 보니 예전에 한글 완성형에서 표현되지 않았던 게 기억납니다..

조합형에서만 표시되었던 것 같은데... ㅎㅎ


(새 블로거 버전에서는, 랄라라님의 한글 아이디 글자가 깨져서, 다시 올립니다.)

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top