2015-01-31 17 views
0

파이썬에서 정규식을 사용하고 있습니다. 나는 2 개의 변수 사이의 모든 데이터를 꺼내려고하는데 { "justin_h로 끝나고"} 특수 문자가 포함 된 것으로 시작하지만 정규식 구문에 문제가 있습니다.정규식에서 이스케이프 된 문자 뒤의 문자열

[{]["][justin_h...["][}] 

을 그리고 그것은 어떤 결과를 반환하지 :

내가 사용하고있다. 내가 거기에 있다는 사실을 알았고 [{] [ "]는 결과를 반환하지만 작동하지 않는 문자열을 시작할 때가 어디입니까?

+0

'{'또는 다른 특수 문자와 일치 시키려면'\ {'을 사용할 수 있습니다. 또한 'blabla'대신 'r'blabla'라는 원시 문자열을 사용하고 있는지 확인하십시오. 일치하는 텍스트의 정확한 부분과 예상되는 결과를 제공하면 좋을 것입니다. –

+0

나는 []을 사용하여 그것을 읽었지만, 정규식을 \로 바꾸는 것은 결과를 반환하지 않습니다. –

+0

@ user5061 : 여러 언어의 정규식 구현에서'[{]'를 사용할 수도 있습니다. @ajh :'... '는 정확히 3자를 의미합니다 - 원하는 것입니까? 임의의 문자 시퀀스를 매치 시키려면'. *'를 대신 쓰면됩니다. – psmears

답변

0

캡처 그룹 또는 둘러보기 사용 .

r'\{"justin_h(.*?)"}' 

잡아 당신이 그룹 인덱스 1. 당신이 잡아하려는 부분은 줄 바꿈 문자를 포함합니다.이 경우를 들어, (?s) DOTALL 플래그를 사용할 필요가 작동하지 않습니다에서 원하는 문자열입니다.

r'(?s)\{"justin_h(.*?)"}' 

예 :

>>> re.findall(r'\{"justin_h(.*?)"}', 'foo{"justin_hfoobar"}barfoo') 
['foobar'] 
+0

정규식의 끝에서 마지막 "}을 이스케이프 처리해야합니까? –

+0

아니요 마지막'}'을 이스케이프 처리하지 않아도됩니다 –

+0

그래도 결과가 반환되지 않는 것 같습니다. /이 코드는 파이썬? –