정규식 ( Regular Expression ) 소개

컴퓨터 이야기/정규식 2010. 6. 20. 14:42

정규 표현식(正規表現式, Regular expression에서 줄여서 Regexp 또는 Regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히 Tcl은 언어 자체에 강력한 정규 표현식 구현을 내장하고 있다.

정규 표현식은 컴퓨터 과학의 정규 언어로부터 유래하였으나 구현체에 따라서 정규 언어보다 더 넓은 언어를 표현할 수 있는 경우도 있으며, 심지어 정규 표현식 자체의 문법도 여러 가지 존재하고 있다. 이 중 표준화된 것으로는 POSIX의 확장 정규 표현식이 있으며, 표준화되지는 않았지만 펄의 정규 표현식과 그 대체 구현인 PCRE도 널리 사용된다.


정규식의 종류는 JGsoft/.NET/Java/Perl/PCRE/ECMA/Python/Ruby/Tcl ARE/POSIX BRE/POSIX ERE/GNU BRE/GNU ERE 정도가 있는데, 여기서는 사실상 표준처럼 널리 쓰이는 Perl 정규표현식 위주로 글을 쓰겠습니다. 비록 표준은 아니지만 C++ 0x TR1 라이브러리에서도 POSIX BRE/ERE 보다는 Perl Regular Expressions 를 기본값으로 쓰고 있거든요.

정규식을 활용하면 문서내에 숫자를 찾는것도 쉽게 할 수 있고 특정 토큰으로 분리되어있는 문서도 쉽게 뽑아올 수 있습니다.

예를 들어 숫자를 찾고 싶다면
"[-+]?([0-9]+\.[0-9]+|[0-9]+)"

라고 쓰는거죠. 위 식은 "+3.3" "-1.2" "3.5" "03.32" "-52.44" "34" "33" "+3" "-5" 등의 숫자와 전부 매치가 됩니다.

만약에 누가 어떤 문서를 주면서 "이 문서 안에 있는 모든 숫자를 가져와" 같은 업무가 발생한다면

당신은 어떻게 하겠습니까? 몇KB안되는 텍스트 문서라면 일일이 찾을 수 있겠죠. 하지만 그 분량이 많아지면 그 작업은 정말 피곤하고 영양가 없는 작업이 될겁니다. 사람이 직접 한다고 해도 그 작업의 정확성은 보장할 수 없기도 하고요.

이러한 작업을 엄청나게 간단하게 컴퓨터한테 시킬 수 있는 강력한 도구가 정규표현식입니다.
컴퓨터가 할 수 있는 일은 컴퓨터한테 시켜야되지 않겠어요?

'컴퓨터 이야기 > 정규식' 카테고리의 다른 글

이스케이프 문자와 기타 반복자  (0) 2010.07.27
정규식 입문  (1) 2010.06.21
: