Regular Expression에서의 Greedy 와 Ungreedy 에 대한 유용한 링크 하나.
Papyrus's 문자열 패턴
앞서 올린 글 Regular Expression 을 실제 작업에 이용하기 에서 팀 내에 배포했다고 한 툴의 사소한 버그 중에 regexp의 greedy 속성에 기인하는 것이었다. 예를 들어
event_log( HELLO_EVENT, "Hi, Sir");
이라는 문장에 대해 앞의 패턴 즉, ^\s*(event_log.*),.*;$ 을 적용하게 되면 $1 의 값은 아래와 같은 값이 나오게 된다.
event_log( HELLO_EVENT, "Hi,
결과적으로
print "$1);\n";
의 수행 결과는
event_log( HELLO_EVENT);
가 아닌
event_log( HELLO_EVENT, "Hi);
가 되게 되는 문제점이 있었다.
실제 문제 해결은 다른 방법을 써서 하였지만, 좋은 정보라서 소개하고자 한다.
댓글을 달아 주세요