이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.
정규표현식 [2010-10-14 03:14] lifthrasiir 새로 만듦 |
정규표현식 [2011-05-30 18:25] (현재) |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== 정규 표현식 ====== | ====== 정규 표현식 ====== | ||
- | Regular expression. **정규식**이라고도 부른다. "정규 표현식"이라는 말은 여러 의미로 쓰이지만 공통적으로 특정한 [[문자열]] [[집합]]을 표현하는 간결한 수단을 가리키며, 이름에서 알 수 있듯 본래는 이 집합이 [[정규문법]]으로 제한되었으나 지금은 별로 그런 제약은 없다. | + | Regular expression. **정규식**이라고도 부른다. "정규 표현식"이라는 말은 여러 의미로 쓰이지만 공통적으로 특정한 [[문자열]] [[집합]]을 표현하는 간결한 수단을 가리키며, 이름에서 알 수 있듯 본래는 이 집합이 [[정규문법]]으로 제한되었으나 지금은 별로 그런 제약은 없다. 문자열 처리에 널리 쓰이며 매우 유용하기 때문에 요즘의 거의 모든 [[프로그래밍언어]]는 정규식을 어떤 형태로든 지원하는 게 보통이다. |
정규 표현식은 구현체에 따라 그 문법이나 기능에 있어 큰 차이가 있는데, 그 중에서 가장 큰 줄기는 다음과 같다. | 정규 표현식은 구현체에 따라 그 문법이나 기능에 있어 큰 차이가 있는데, 그 중에서 가장 큰 줄기는 다음과 같다. | ||
* [[POSIX]] 기본 정규 표현식(BRE) 및 확장 정규 표현식(ERE) | * [[POSIX]] 기본 정규 표현식(BRE) 및 확장 정규 표현식(ERE) | ||
- | * [[펄]] 호환 정규 표현식(PCRE) | + | * [[펄]] 정규 표현식 및 [[PCRE|펄 호환 정규 표현식]](PCRE) |
- | 두 줄기는 기본 철학이 매우 다른데, 전자는 성능을 위하여 표현력을 많이 희생했으며, 후자는 표현력을 극대화시키기 위해서 성능을 다소 희생한 면이 있다. 실제로 펄 정규식은 [[NP-완전]]하며(([[http://perl.plover.com/NPC/NPC-3SAT.html|Reduction of 3-CNF-SAT to Perl Regular Expression Matching]])) 모든 경우에서 최적으로 돌아가도록 구현하는 건 거의 불가능에 가깝다. (그래서 가장 많이 사용되는 경우에 대해서만 최적화하고 있다...) | + | 두 줄기는 기본 철학이 매우 다른데, 전자는 성능을 위하여 표현력을 많이 희생했으며, 후자는 표현력을 극대화시키기 위해서 성능을 다소 희생한 면이 있다. 실제로 펄 정규식은 [[NP-난해]]하며(([[http://perl.plover.com/NPC/|Perl Regular Expression Matching is NP-Hard]]. 심심하면 펄 정규식으로 [[소수]]를 체크한다거나 [[문맥의존문법]]을 구현해 보시라.)) 모든 경우에서 최적으로 돌아가도록 구현하는 건 거의 불가능에 가깝다. (그래서 가장 많이 사용되는 경우에 대해서만 최적화하고 있다...) |
===== 문법 ===== | ===== 문법 ===== |