2012-03-16 2 views
0

먼저 코드 :파이썬 정규 표현식 실패

str = "(suf) some text here (stuff here)" 
r = re.split(r"(?<=[\)]) (?=[\w\(])", str) 

이 내가 형식의 파일을 구문 분석하는 데 사용하고 일부 코드의 샘플입니다. 기본적으로 결과로 ('suf','some text here (stuff here)')을 얻으려고합니다. 나는 다양한 순열을 시도했지만, 계속해서 그 모든 것이 나를 대신 해주는 문자열이다.

+4

I을 저것을 실행해라, 나는 ('suf)', '여기에 몇 개의 텍스트 (여기에있는 것들)'], 당신이 찾고있는 것이 아닌가? – xitrium

+0

나를 위해 일합니다. 이것이 실패 할 때 사용하고있는 문자열과 정확히 일치합니까? 'repr()'값을 제공 해보자. –

+0

문제를 재현하지 못했습니다 – Atif

답변

1

문자열을 분할하고 내부 일치를 캡처하지 않습니다. 당신이 두 개체로 첫 번째 괄호 내부 문자열 및 다른 모든 것들을 캡처하려면 이 (이것은 내가 이런 짓을 했을까 방법 그냥, 너무 분할로 작동 할 수 있습니다) match와 함께 작동 :

str = "(suf) some text here (stuff here)" 
# capture anything inside first set of brackets 
# then capture everything else, dropping any spaces between them 
r = re.match(r"^\((.*?)\)\s*(.*)", str) 
r.groups() 
r.group(1) # group(0) is the full original string 
r.group(2)