2012-02-02 4 views
0

파이썬 3.2를 사용하여 생성 된 ARFF 파일을 구문 분석하려고합니다. 현재, 나는파이썬 정규식 : 하나의 정규식에서 여러 부분 문자열을 일치시키는 방법은 무엇입니까?

@attribute sepallength {'\'(-inf-5.55]\'','\'(5.55-6.15]\'','\'(6.15-inf)\''} 

같은 구조 라인을 읽어들이는 정규 표현식을 작성하려고하고, 그 그룹() 함수 즉

("sepallength", "'\\'(-inf-5.55]\\''", "'\\'(5.55-6.15]\\''", "'\\'(6.15-inf)\\''") 

를 반환하는 MatchObject, 나는 쓰기를 시도하고 반환하고 특정 형식을 따르는 하나 이상의 부분 문자열과 일치하는 정규 표현식입니다. 이 (선이 문자열 인)처럼

나의 현재 시도 같습니다

matches = re.match(r"@attribute (\w+) {(?:([^,]+),?)+}", line) 

그러나 그 그룹() 함수는 괄호 안에 패턴과 일치하는 마지막 부분 문자열 반환

('sepallength', "'\\'(6.15-inf)\\''") 

두 번째 더하기 기호가 표현식을 작성하지 않는 이유는 내가 작성한 쉼표가 아닌 규칙을 충족시키는 모든 인스턴스와 일치합니까? 원하는 값을 쉽게 얻을 수 있습니까?

답변

0

왜 두 번째 더하기 기호는 표현식 매치에게하지-A-쉼표을 만족하는 모든 인스턴스를 만드는되지 않은 질문

에 대한 답변 나는 썼다 규칙? 내가 findall은 할 수있는 방법을 볼 수 없습니다

+0

"할 수 없습니다"는 정답입니다 v_v – sadakatsu

0

나는 당신이 findall은 찾고있는 생각 http://docs.python.org/library/re.html#re.findall

+0

) (그룹이 여러 번 일치

경우, 마지막 경기는 액세스 :

적어도 섹션 Match Objects에 설명되어 있습니다 작업. 영숫자 시퀀스와 같은 것을 찾고 있다면 멋질 것입니다. 그러나 필자는 반드시 중괄호로 둘러싸인 쉼표로 구분 된 쉼표가 아닌 문자열을 찾고 있습니다. 또한 속성 이름 (예 : '길이')을 동시에 가져 오려고합니다. 이 문제에 findall()을 적용 할 수 있습니까? – sadakatsu

+0

흠, 소리가 복잡해. 나는 multipule 단계를 수행하는 함수로 문제를 해결함으로써 당신이 더 잘 도움이 될 것이라고 생각한다. 1) 단지를 따라 이동하는데 나는 현재 유사한 솔루션으로 일하고 {} 및 분할 ('') –

+0

사이에 모든 것을 얻을 라인 2)은 "sepalllength"을 얻기 3)을 참조하십시오. 그러나 정규 표현식의 개념이 여러 부분 문자열 일치에 대한 아이디어를 허용하지 않습니까? 그렇다면 정규 표현식의 파이썬 표현이 그것을 지원합니까? – sadakatsu

관련 문제