[완료] python에서 정규표현식 질문입니다!
안녕하세요.
현재 간단한 xml 문서를 정규표현식을 이용해 내용을 가져오고자 합니다.
그런데 제가 생각한 대로 내용을 가져오지를 못하네요..
일단, xml문서의 예시는 다음과 같습니다. (%lt, %gt 대신에 [, ]를 사용합니다.)
[utterance id=0 sender=0102946**** reciever=0102089**** time=2011-09-09]
test1
[/utterance]
[utterance id=1 sender=0102089**** reciever=0102946**** time=2011-09-09]
test2
[/utterance]
[utterance id=2 sender=0102946**** reciever=0102089**** time=2011-09-09]
test3
[/utterance]
위와 같은 문장에서 test1, test2, test3을 얻기 위해 정규표현식을 다음과 같이 세웠습니다.(정구표현식 이내에서도 %lt, %gt 대신에 [, ]를 사용했습니다)
utrprog = re.compile(r' [utterance id=(?P[uid]([0-9]*)) sender=(?P[usd]([0-9\*]*)) reciever=(?P[urcv]([0-9\*]*)) time=(?P[utime]([0-9\-: ]*))](?P[ucnt].*)[/utterance]', re.S)
그 뒤, utrprog에 위 xml 문장을 finditer했는데, 저는 ucnt group에서 각각 test1, test2, test3을 뽑아낼 수 있을 줄 알았지만 예상외로 하나의 ucnt에
test1
[/utterance]
[utterance id=1 sender=0102089**** reciever=0102946**** time=2011-09-09]
test2
[/utterance]
[utterance id=2 sender=0102946**** reciever=0102089**** time=2011-09-09]
test3
가 모두 할당되어 버리더군요... test1 뒤의 [/utterance]를 인식하지 못하는 것 같았습니다.
어떻게 정규표현식을 바꾸어야 test1, test2, test3 을 따로 뽑아낼 수 있나요?
파이썬을 잘 몰라서 링크만 달아봅니다.
http://adnoctum.tistory.com/544
정규 표현식 최소 일치 (non-greedy match)
정말
감사합니다. 해결되었습니다.
댓글 달기