3.3.4 비 포획 형 그룹

1353 단어
지금까지 모두 괄호 의 세 가지 용 도 를 소개 했다.
  • 그룹: 관련 요 소 를 한데 모 아 하나의 요 소 를 구성한다.
  • 다 중 선택 구조: 나타 날 수 있 는 다 중 키 표현 식 을 규정 합 니 다.
  • 참조 그룹: 하위 표현 식 과 일치 하 는 텍스트 를 저장 하여 나중에 참조 할 수 있 도록 합 니 다
  • 이 세 가지 용 도 는 서로 독립 된 것 이 아니 라 서로 겹 치 는 것 이다.
  • 단순 한 그룹 은 '하나의 다 중 선택 분기 만 포함 하 는 다 중 선택 구조' 로 볼 수 있다.
  • 전체 다 선 구조 도 하나의 요소 로 간주 되 고 하나의 양사 로 한정 할 수 있다.
  • 괄호 만 나타 나 면 정규 표현 식 은 일치 할 때 괄호 안의 하위 표현 식 을 저장 하여 인용 을 제공 합 니 다.

  • 그러나 인용 이 필요 하지 않 으 면 괄호 로 구 성 된 인용 정 보 를 저장 하면 성능 에 영향 을 줄 수 있 습 니 다.표현 식 이 복잡 하면 처리 할 텍스트 가 많 고 성능 에 심각 한 영향 을 줄 수 있 습 니 다.
    이러한 문 제 를 해결 하기 위해 정규 표현 식 은 비 포획 그룹 (non - capturing group) 을 제공 합 니 다.비 캡 처 그룹 은 일반 캡 처 그룹 과 유사 합 니 다. 괄호 뒤에 물음표 와 콜론 (?:...) 을 바짝 따 를 뿐 이 괄호 는 비 캡 처 형 괄호 라 고 합 니 다. 정량 어의 역할 범위 만 제한 할 수 있 고 텍스트 를 캡 처 할 수 없습니다.그룹 을 인용 할 때 그룹의 번 호 는 괄호 가 열 린 순서대로 왼쪽 에서 오른쪽으로 증가 합 니 다. 다만 포획 그룹 을 기준 으로 해 야 합 니 다. 포획 그룹 이 아 닌 그룹 은 생략 합 니 다.
    예 3 - 35 비 포획 형 그룹 사용
    #       
    print(re.search(r'(\d{4})-(\d{2})-(\d{2})', '2018-12-20').group(1))  # 2018
    print(re.search(r'(?:\d{4})-(\d{2})-(\d{2})', '2018-12-20').group(1))  # 12
    

    비 포획 형 그룹 은 일치 하 는 텍스트 를 저장 할 필요 가 없고 전체 표현 식 의 효율 도 높 아 지지 만 그룹 을 포획 하 는 것 보다 아름 다 워 보 입 니 다.단, 괄호 로 묶 거나 선택 구 조 를 읽 는 기능 만 사용 하고 인용 으로 묶 지 않 으 면 캡 처 되 지 않 은 괄호 를 사용 해 야 합 니 다.

    좋은 웹페이지 즐겨찾기