2016-09-05 4 views
1

메신저를 작동하고 난 이해가 일치하지 않는 간단한 정규식을 만들려고하지만 내가정규식 정규식을 배우고 시작

import re 


pattern = r'[a-z]+[a-z]' 



print re.findall(pattern,"adasdasad"); 

가 반환 파이썬에서 재판을 어떤 식 으로든 일치 [ 'adasdasad'] [az] +가 전체 문자열을 소비해야하고 나머지 ([az])가 평가 이유를 찾지 못해서 작동하지 않아야하는 곳 ????

+0

아니요, 왜냐하면'+'는 * 소유 * 한정 기호가 아니기 때문입니다. –

+0

당신은 당신의 정규식을 테스트 할 수 있습니다 - https://regex101.com/ –

+3

'+'는 전체 문자열을 소비하지 않으며, 가능한 한 많이 소비합니다. 그것은 엄청난 차이입니다. –

답변

5

+은 소유 한정 기호가 아니며 정량화 된 하위 패턴으로 역 추적 할 수 있습니다.

[a-z]+adasdasa[a-z] 일치 d, this demo를 참조 일치합니다.

enter image description here

BTW, 경우에 당신은 PCRE, 이미 것 그것 하나 이상의 문자와 일치해야하는 것처럼 아무것도 다음 다른 문자와 일치하지 않을 것 (소유격 정량 ++와 패턴)으로 [a-z]++[a-z]를 사용 첫 번째 하위 패턴과 함께 사용됩니다. 따라서 패턴은 (?!)과 동일합니다.

+0

감사합니다. 이러한 것에 대해 자세히 알아 보려면 참조 정보를 제공해 주시겠습니까 – user3809210

+0

정확한 주제에 관심이 있으십니까? 일반적으로 [regexone.com] (http://regexone.com/)에서 [regular-expressions.info] (http://www.regular-expressions.info), [ regex SO 태그 설명] (훌륭한 온라인 리소스에 대한 많은 링크가있는), 그리고 [SO Regex는 무엇을 의미합니까?] 커뮤니티 SO 게시물 (http : // stackoverflow .com/questions/22937618/reference-what-does-this-regex-mean). [rexegg.com] (http://rexegg.com)은 또한 훌륭한 사이트입니다. –