1,054
yesterday 1,636
visitor 24,753,899
10

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

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

가령 도스 프롬프트에서의 와일드카드 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

 

 

'헬로마켓'과 함께하는 스마트한 중고 아이템 거래

https://www.hellomarket.com

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수

Program Note 로그인 :)