가능한 중복 :
파이썬 re 모듈 문서에서
Non capturing group?일반 괄호
, 내가 참조 :
(?:...) Non-grouping version of regular parentheses.
및
(...) Matches the RE inside the parentheses.
The contents can be retrieved or matched later in the string.
무엇이 다른가요?
가능한 중복 :
파이썬 re 모듈 문서에서
Non capturing group?일반 괄호
, 내가 참조 :
(?:...) Non-grouping version of regular parentheses.
및
(...) Matches the RE inside the parentheses.
The contents can be retrieved or matched later in the string.
무엇이 다른가요?
곧 : 비 그룹화는 그룹과 일치하지 않음을 의미합니다. 즉, 예를 들어 \ 1로 참조 할 수 없습니다.
차이점은 기본적으로 켄트가 말한 것입니다.
매우 복잡한 정규 표현식이나 성능이 중요한 텍스트를 대량으로 적용 할 때 유용 할 수 있습니다.
또한 정규식에서 많은 그룹화를 사용하지만 그 중 일부만이 (텍스트 대체 또는 다른 이유로) 참조 될 경우 이 실제로으로 필요한 것은 더 간단합니다. 그룹을 캡처하므로 숫자를 건너 뛰는 대신 \ 1 (또는 $ 1, 달려 있음)에서 \ n까지 참조 할 수 있습니다.
그룹화를 해제하면 실제 일치 검색어로 반환되지 않고 일치 문자열에 일련의 문자를 사용할 수 있습니다. 예를 들어, 영수증을 검색한다고 가정 해 보겠습니다. 상품에 대한 가격 만 받고 싶다고 가정 해 보겠습니다. 말처럼 영수증 보인다 : 당신은 총 말했다 가격으로 라인을 제외하지만 다른 모든 가격을 캡처하는 비 그룹화 괄호를 사용할 수
milk 1.25
bread 1.15
deli meat 5.25
total 7.65
.
나는 캡쳐되지 않은 그룹들과보기를 혼동하고 있다고 생각합니다. 비 캡처 그룹이 일치 항목에 포함되기 때문에 역 참조를 통해 내용에 액세스 할 수 없습니다. –
@TimPietzcker 사용 방법에 따라 다릅니다. 적어도 파이썬의 정규식 엔진에서는 그룹화되지 않은 일치가'.groups()'에 나타나지 않을 것이므로'findall()'또는 무엇인가를한다면, 내가 기술 한 것처럼 효과적으로 동작 할 것입니다 . –
@ sr2222하지만 전체 일치 항목이 들어있는 .group (0)에 표시됩니다. – jordanm
설명이 매우 정확하지 않습니다. '(? : ...) +'에 대해서 생각해 보면, 한정어는 while 그룹에 적용되지만 일치하는 내용을 참조 할 수는 없습니다. 나중에 캡처됩니다. –