정규식이란, 문자열을 검색/치환/추출할 때 사용하는 일종의 '공식'입니다. 원래는 유닉스에서 사용되었지만 이제는 윈도우용 프로그램에서도 널리 쓰입니다.
가령 도스 프롬프트에서의 와일드카드
Wild Card 를 예로 들어보겠습니다.
dir *.txt 라고 입력하면,
123.txt
ABCD.txt
똠방.txt
똠방ABCD각하.txt
등, 모든 .txt 확장자를 가진 파일들의 목록이 한꺼번에 출력됩니다. 여기서 *표는, '임의의 문자들'을 의미하는 와일드 카드입니다. 물론 와일드카드가, 정규식은 아니지만, 정규식도 이것과 비슷합니다. 물론 훨씬 더 강력한 것입니다.
가장 기초적인 예제
/나는/이라는 정규식이 있다면 "나는"이라는 모든 문자열을 찾습니다.
/^나는/이것은 "나는"으로 시작되는 "나는"이라는 단어를 찾는 것입니다. "나는"이라는 문자열이 문장의 중간에 있거나 끝에 있다면 찾지 않습니다. 왜냐하면 정규식에서, 캐럿(^) 기호는 "문자열의 맨처음"을 의미하기 때문입니다.
/주소$/위의 정규식을, "주소 좀 알려 주소"라는 문장에 적용하면 앞의 "주소"는 매치되지 않고 뒤의 "주소"만 매치됩니다. 정규식에서 $ 는 문자열의 끝을 의미하기 때문입니다. (행갈이 문자를 의미하지는 않고 그냥 단순히 문자열의 끝부분을 의미함)
/^하하하하$/이것은 "하하하하"라는 문자열로만 이루어진 행을 매치합니다. 캐럿과 달러 기호가 앞뒤로 있기 때문에, "하하하하"로 시작해야 하고 "하하하하"로 끝나야 합니다. 그런 경우는 그 문장이 "하하하하"로만 이루어진 경우에만 가능하기 때문입니다. "하하하하 ㅎㅎ", "ㅋㅋ 하하하하 안녕" 이런 문장 속의 "하하하하"는 매치되지 않습니다.
이런 식입니다. 그러나 이것은 간단한 예일 뿐이고, 복잡한 정규식은 한없이 복잡합니다.
정규식을 사용할 수 있는 프로그램
* 각종 텍스트 에디터에서, 복잡한 문자열을 찾고 치환할 때 정규식을 사용합니다. 울트라에디터는 물론이고 거의 모든 텍스트에디터에서 정규식을 지원하지만, 제가 보기로 정규식을 가장 깔끔하게, 그리고 한글도 완벽하게 지원하는 에디터는
이엠에디터(EmEditor)였습니다.
* 프로그래밍 언어에서 문자열을 검색/치환할 때 사용됩니다. C/C++를 제외한, 사실상 모든 언어에서 정규식을 공식적으로 지원하는데, 역시 최고봉은 펄(Perl)입니다. (C++도, Boost C++ Libraries 를 사용하면 정규식을 쓸 수 있습니다.)
장점
문자열을 다루기 위해서 굳이 수십 수백 줄의 프로그래밍을 하지 않아도, 정규식 1~2줄만 있으면 대부분의 문자열 작업을 해낼 수 있습니다.
단점
* 프로그램마다 정규식 문법에 약간씩 차이가 있어, 호환이 안될 때가 많습니다. 표준 정규식도 있는 것으로 알고 있는데 기능이 미약하여, 현재 사실상의 표준은 펄(Perl)의 정규식입니다. 펄의 그것이 가장 강력합니다.
☞ 정규식
☞ 텍스트 에디터
☞ Perl
출처 : http://mwultong.blogspot.com/2006/06/regular-expressions-regex.html