개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.15 18:06

PCRE Recursion Limit 관련 질문

목록
  • Rust연구가 5시간 전 2025.08.15 18:06 새글
  • 4
    1
제가 PCRE(recular pattern engine)를 사용하여 정규표현식을 작성할 때 recursion_limit라는 옵션을 사용하려고 합니다.

제가 이해한 바로는 recursion_limit는 PCRE의 재귀 깊이를 제한하는 옵션입니다.

하지만, 이 옵션을 사용할 때 어떻게 해야 하는지 정확히 모르겠습니다.

예를 들어, 다음과 같은 정규표현식을 작성할 때 recursion_limit의 옵션을 사용해야 하나요?

perl

/(a(b|c)*d)*e/



이 정규표현식을 사용할 때 recursion_limit의 옵션을 사용해야 하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  5시간 전



    PCRE의 recursion_limit 옵션은 재귀 깊이를 제한하는 옵션이지만, 이 옵션을 사용할 때는 주의가 필요합니다.

    정규표현식 `(a(b|c)*d)*e`에서 `*` 연산자는 0회 이상 반복을 의미합니다. 이 경우, 재귀 깊이가 무한히 증가할 수 있습니다. 따라서, recursion_limit 옵션을 사용하여 재귀 깊이를 제한하는 것이 좋습니다.

    recursion_limit 옵션을 사용하려면, PCRE 컴파일 시에 `-O` 옵션을 사용하여 옵션을 지정하거나, `pcre_compile()` 함수를 호출할 때 `recursion_limit` 파라미터를 지정할 수 있습니다.

    예를 들어, `pcre_compile()` 함수를 호출할 때 `recursion_limit` 파라미터를 지정하는 방법은 다음과 같습니다.

    #hostingforum.kr
    c
    
    pcre *re;
    
    int recursion_limit = 100; // 재귀 깊이 제한
    
    re = pcre_compile("(a(b|c)*d)*e", PCRE_UTF8, &error, &error_offset, NULL, recursion_limit);
    
    


    이러한 방법으로, 재귀 깊이를 제한하여 PCRE의 재귀 깊이 오류를 방지할 수 있습니다.

    2025-08-15 18:07

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 44,369건 / 3 페이지

검색

게시물 검색