2013-10-15 2 views
0

각괄호로 묶이지 않은 텍스트를 가져와야합니다.기울임 괄호로 묶이지 않은 텍스트의 정규식 - 파이썬

> whatever something<X="Y" zzz="abc">this is a foo bar <this is a 
> < whatever>and i ><only want this 

원하는 출력은 다음과 같습니다 :

내 입력은 다음과 같다 내가 먼저 제거 괄호 안에있는 것을 감지 시도했습니다

> whatever something 
this is a foo bar <this is a 
> 
and i ><only want this 

. 하지만 <> 대신에 전체 <...> 대신 속성을 일치시키는 것 같습니다. 원하는 출력을 얻으려면 어떻게해야합니까?

import re 
x = """whatever something<X="Y" zzz="abc">this is a foo bar <this is a\n< whatever>and i ><only want this""" 
re.findall("<([^>]*)>", x.strip()) 
['X="Y" zzz="abc"', 'this is a\n ', ' whatever'] 
+0

왜 ''이 출력에서 ​​제거되지 않습니까? –

+1

파이썬을 사용하지는 않지만이 '<.+?>'는 샘플 데이터에서 바꾸어야 할 모든 것을 일치시킵니다. 이것은 할 것인가? 스니퍼는 요점이 있습니다. 나는 단지''=이기 때문에 당신이 원하지 않는 것을 제거하겠다고 생각했다. ' – gwillie

+0

. 어떤 태그도'\ n'을 갖지 않을 것이라고 가정합니다. – alvas

답변

1

당신은 따옴표 안에 괄호를 이동 (당신이 이미 가지고있는 괄호를 제거) 괄호 자신을 포함 <...> 사이의 모든 텍스트를 잡기 위해 정규식 패턴해야한다. 또한 원하는 출력을 얻으려면 \n자를 제외해야합니다.

import re 
x = """whatever something<X="Y" zzz="abc">this is a foo bar <this is a\n\ 
     < whatever>and i ><only want this""" 
y = re.findall("(<[^>\n]*>)",x.strip()) 
z = x[:] 
for i in y: 
    z = z.replace(i,'\n') 
print(z) 
whatever something 
this is a foo bar <this is a 

and i ><only want this 

괄호는 findall 일치하는 항목을 발견 할 때 그룹에 원하는 텍스트 나타냅니다.

+0

아, 세 번째 출력 줄에'> '가 누락 되었습니까? – alvas

+0

나는이 질문을 이해하지 못한다 ...이 비트의 출력은 정확히 원래의 질문에 넣은 출력이다.'''뒤에'?'를 넣을 것인가 말 것인가? – darthbith

+0

'< whatever> '앞에'>'가 있고'an only want this'가 있기 때문에'>'를 붙잡고 싶습니다. 그러나 걱정하지 마라, 나는 그것을 또한 잡았다. – alvas