2013-05-12 3 views
1

이것은 학습 목적으로 사용하는 것으로, 다음 코드가 있습니다. 큰 따옴표없이 'abcbc'만을 추출하려면 어떻게해야합니까? 나는 또한 변경된 것을 re.search(r'\A\"(.*?)\"',a).group() 시도했다.큰 따옴표를 사용하지 않고 문자열 내에서 문자열을 추출하십시오.

>>> a = "\"abcbc\" lol" 
>>> re.search(r'\A"(.*?)"',a).group() 
'"abcbc"' 

도 패턴을 '\A"(.*?)'으로 변경하면 큰 따옴표 뒤에 모든 것이 반환됩니다. 그러나 그것은 다음을 제공합니다. 내가 틀린 것이 있습니까?

>>> re.search(r'\A"(.*?)',a).group() 
'"' 

답변

3

당신은 당신이 그룹에서 원하는 것을 캡처하는,하지만 인수 group()를 호출하여, 당신은 전체 경기 (그룹 1), 원하는 그룹 (그룹 1)하지를 반환한다. .group(1)으로 전화하여 원하는 그룹을 찾으십시오. 두 번째 질문에 대해서는

>>> a = "\"abcbc\" lol" 
>>> re.search(r'\A"(.*?)"',a).group(1) 
'abcbc' 

, *?이 아닌 욕심이다 : 그것은 할 수있는만큼 거의 일치합니다. *은 일치하는 0을 허용하기 때문에 *?은 할 수있는 경우 아무 것도 일치하지 않으며 --- 특정 시점까지 강제로 일치시킬 수있는 항목이 없기 때문에 일치 할 수 있습니다. 그 다음에 따옴표를 붙이면 다음에 따옴표와 일치 할 수있는 한 일치 할 것이고 닫는 따옴표에 도달 할 때까지 텍스트를 계속 사용하게합니다. 하지만 따옴표가 없으면 아무것도 매치하지 않습니다. 매칭을 계속할 이유가 없기 때문입니다. 당신이 아닌 욕심 하나를 사용하는 경우

, 그것은 참으로 라인의 끝에까지, 큰 따옴표 후 --- 따옴표 후 모든 모든 것을 일치합니다 :

>>> re.search(r'\A"(.*)',a).group() 
'"abcbc" lol' 
+0

나는'생각 \ A "([^"] *)'물론 (그룹 (1)) 할 수도 있습니다. – gillyspy

관련 문제