이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.
정규표현식 [2010-10-14 03:17] lifthrasiir |
정규표현식 [2011-05-30 18:25] (현재) |
||
---|---|---|---|
줄 8: | 줄 8: | ||
* [[펄]] 정규 표현식 및 [[PCRE|펄 호환 정규 표현식]](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]]. 심심하면 펄 정규식으로 [[소수]]를 체크한다거나 [[문맥의존문법]]을 구현해 보시라.)) 모든 경우에서 최적으로 돌아가도록 구현하는 건 거의 불가능에 가깝다. (그래서 가장 많이 사용되는 경우에 대해서만 최적화하고 있다...) |
===== 문법 ===== | ===== 문법 ===== | ||
줄 22: | 줄 22: | ||
펄 호환 정규 표현식에서는 ''()'' 괄호 문법의 맨 첫 문자로 대부분의 메타 문자가 올 수 없음을 악용(?)하여, ''(?...)'' 꼴의 문법을 특수한 목적(조건 체크, 임의의 코드 삽입, 설정 변경 등등)으로 사용한다. 펄 5.10 이후로는 명령형으로 사용되는 ''(*...)'' 꼴의 문법도 사용한다. | 펄 호환 정규 표현식에서는 ''()'' 괄호 문법의 맨 첫 문자로 대부분의 메타 문자가 올 수 없음을 악용(?)하여, ''(?...)'' 꼴의 문법을 특수한 목적(조건 체크, 임의의 코드 삽입, 설정 변경 등등)으로 사용한다. 펄 5.10 이후로는 명령형으로 사용되는 ''(*...)'' 꼴의 문법도 사용한다. | ||
- | |||
- | ===== Headline ===== | ||
- | |||
- | |||